Manchmal sieht man den Wald vor lauter Bäumen nicht. Ich nehme an, bei meinem Corde ist es ähnlich. Also: beim Quellcode für einen RGBW-Controller möchte ich den über die Fernbedienung ausschalten (Helligkeit=0) und über die gleiche Taste wieder einschalten. Im zweiten Versuch habe ich dazu noch eine extra Variable eingeführt, welche sich den Zustand merken soll. Weiterhin wird der Wert der Helligkeit einfach gespeichert.
while(1) {
if (-1 == rc5.flip) //keine FB - Potiabfrage
{
...
}
else
{
code = rc5.code;
addr = rc5.addr;
/* und auf naechstes Zeichen warten */
rc5.flip = -1;
...
case (code)
...
case 12: { if (LEDaus==1) //ausschalten
{
bri_val_old = bri_val;
bri_val=0;
LEDaus=0;
}
else// wieder auf vorhergehenden Wert einschalten
{
bri_val=bri_val_old;
bri_val_old = 0;
LEDaus=1;
}
_delay_ms(500);
break;}// Aus/wieder ein
...
}
Alles anzeigen
Wenn ich jetzt die Fernbedienung kurz drücke, geht die LED aus und gleich wieder an. Ich dachte, ein Delay kann das verbessern, da es zu schnell abläuft, aber da fühlt es sich an wie Delay - Aus - An. Wenn ich etwas länger drücke, ist so nach etwa 2x blinken (Aus-An-Aus-An-Aus) der gewünschte Zustand erreicht. Beim Einschalten genau so. Habe ich da einen denkfehler drin?