Hallo Leute,
Ich habe ein komisches Problem und hoffe jemand kann mir helfen. Und zwar:
Möchte ich meine Neopixels mit meiner Fernseher Fernbedienung steuern. Das hat auch geklappt jedoch schaffe ich es nicht ein Effekt zu unterbrechen. Bei Tastendruck startet der erste Effekt, danach werden weitere Infarot Signale ignoriert.
Das ganze habe ich mit einem Taster probiert als Interrupt, hier wechselt der Arduino die Effekte wie gewünscht.
Währe für jede Hilfe sehr dankbar!!
All_Effects_IR.ino (19.5 KB)
WS2812B sperren während der Übertragung zum Strip (show()) alle Interrupts. Deshalb kann dann kein IR mehr empfangen werden.
Abhilfemöglichkeiten:
- Andere LED (APA102 mit getrennter Takt und Datenleitung)
-
- MC zur IR-Empfang
Gruß Tommy
Hi
Dein Problem besteht weiter darin, daß Du die aufgerufene Blinkerei erst fertig abarbeiten musst - Das sind unter Anderem FOR-Schleifen und mit delay() wird auch nicht gespart.
Während der Blinkerei wird, außerhalb von .show() schon auf Deine IR-Fernbedienung reagiert - aber gefangen in der Blinkerei wird Das frühestens ausgewertet, wenn Du Damit fertig bist und wieder in loop() vorbei kommst.
Das kann man entflechten - braucht dann aber eine Lauf-Variable und macht bei jedem Aufruf bestenfalls den nächsten Schritt - oder eben Nichts (wenn die Zeit noch nicht gekommen ist).
Nach dem Strickmuster der Nachtwächter-Erklärung (Suche hier im Forum) oder dem Beispiel Blink_without_delay aus der IDE.
MfG