hallo,
inzwischen bin ich durch die verkleinerung des basiswiderstandes R13 von 4,7k auf 3,2k auf einer reichweite der bake von 3 metern angekommen, wohlgemerkt bei (noch) auf niedrigerer temperatur arbeitendem Q2, nach ca. 1 minute wird es schlechter...
jetzt möchte ich außer der reaktion auf dem LCD eine andere reaktion sehen und es klappt nicht:
mit dem aufruf dieser Funktion aus der while schleife (siehe weiter unten):
Code:
void read_IR_value(void)
{
I2CTWI_transmitByte(I2C_RP6_BASE_ADR, 30); // Start with register 30
I2CTWI_readBytes(I2C_RP6_BASE_ADR, ir_value, 1);
}
while-schleife:
Code:
while(true)
{
read_IR_value();
clearLCD();
setCursorPosLCD(0, 0);
writeStringLCD_P("dez: ");
setCursorPosLCD(0, 13);
writeIntegerLengthLCD(ir_value[0], DEC, 4);
setCursorPosLCD(1, 0);
writeStringLCD_P("bin: ");
setCursorPosLCD(1, 8);
writeIntegerLengthLCD(ir_value[0], BIN, 8);
setCursorPosLCD(2, 0);
writeStringLCD_P("hex: ");
setCursorPosLCD(2, 8);
writeIntegerLengthLCD(ir_value[0], HEX, 4);
/*
if (ir_value[0] = 0)
{
sound(180,80,25);
setLEDs(0b1000);
sound(220,80,25);
mSleep(500);
}
*/
readAllRegisters();
}
return 0;
werden die werte der variablen "ir_value", also 0 oder 4 je nachdem ob bake "gesehen" wird oder nicht auf dem LCD ausgegeben.
die if abfrage (hier auskommentiert) der variablen "ir_value" habe ich (bei abgeschalteter bake) mit den werten 1 bis 4 probeweise ausgeführt, die reaktion erfolgt richtig, es piepst. Frage ich nach dem wert "0", passiert nichts, auch bei eingeschalteter bake und auf dem display erscheinendem wert "0"
ich verstehe es einfach nicht. Frage ich die falsche variable ab? Oder nach falschen werten? Oder sind die abfrageabstände zu kurz? kann der beeper nicht so schnell reagieren?
Lesezeichen