Arduino loop in Switch case?
Hallo, ich mache mir mit Arduino und einer Infrarot Fernbedienung selbst einen LED Streifen. Für die einzelnen Knöpfe der Fernbedienung benutze ich SWITCH CASE. Wenn ich mehrere Farben blinken lassen will, dann stoppt er immer bei der letzten Farbe und loopt nicht. Kann mir jemand helfen, wie ich in den Case einen Loop bekomme?
Ich bedanke mich jetzt schon mal im Vorraus ;)
case 0x24388C91: //Alle Farben blinkend
strip.fill(strip.Color(250,250,250),0,100);
strip.show();
delay(500);
strip.fill(strip.Color(250,0,0),0,100);
strip.show();
delay(500);
strip.fill(strip.Color(250,0,125),0,100);
strip.show();
delay(500);
strip.fill(strip.Color(250,0,250),0,100);
strip.show();
delay(500);
strip.fill(strip.Color(125,0,250),0,100);
strip.show();
delay(500);
strip.fill(strip.Color(0,125,250),0,100);
strip.show();
delay(500);
strip.fill(strip.Color(0,250,250),0,100);
strip.show();
delay(500);
strip.fill(strip.Color(0,250,125),0,100);
strip.show();
delay(500);
strip.fill(strip.Color(0,250,0),0,100);
strip.show();
delay(500);
strip.fill(strip.Color(125,250,0),0,100);
strip.show();
delay(500);
strip.fill(strip.Color(250,250,0),0,100);
strip.show();
delay(500);
strip.fill(strip.Color(250,125,0),0,100);
strip.show();
delay(500);
}
1 Antwort
Du könntest eine Variable zum Beispiel blink auf true setzen, wenn der Pnopf gedrückt wird und in loop machst du dann eine if-Abfrage, ob die Variable true ist. Wenn du einen anderen Knopf drückst, musst du die Variable auf false setzten.
Ich sehe aber schon ein Problem in deinen Code. Dadurch, dass du delays benutzt, kannst du in der Zeit kein Signal entgegen nehmen. Du kannst dir ja mal die Funktion millis anschauen.
Dann schick mal deinen Code, am besten privat über eine Freundschaftsanfrage und benutz bitte die Code Funktion.
Danke, ich habe es mit millis ausprobiert in Kombination mit if und es funktioniert.
Mir ist grade aufgefallen, wenn ich millis benutze, dann hat loopt er zwar aber es ist eine längere Verzögerung vor dem Loopen. Ich verstehe nicht warum.