Adafruit NeoPixel effekt?
Hallo zusammen,
Ich möchte mit der Adafruit NeoPixel Library auf meinem Arduino eine Led nach der anderen in einem Durchlaufeffekt angehen lassen. Also praktisch so:
LED1 an
LED2 an
LED3 an
LED4 an
LED5 an
LED1 aus gleichzeitig LED6 an
LED2 aus gleichzeitig LED7 an
usw.
dazwischen soll immer ein kurzes delay sein. Wie Löse ich das am besten mit der Adafruit NeoPixel Library?
P.S.: Es soll praktisch ein durchlaufeffekt wie auf einer Landebahn werden.
Danke für die hilfe
1 Antwort
Für das Warten bietet dir der Arduino eine delay Methode an. Der Parameter gibt die Zeit in Millisekunden an.
Die Arduino NeoPixel Library kenne ich nicht im Detail, aber du wirst mit einem Index (z.B. 0, 1, ... 9) auf LED 1 bis 10 zugreifen können.
Für jede LED kannst du eine eigene Farbe einstellen. In deinem Fall reicht z.B. weiß und schwarz aka. aus.
Um nicht viele Zeile zu wiederholen solltest du dir eine sinnvolle Schleife überlegen.
Ich würde dafür ein for Schleife nutzen. Diese zählt von 0 bis (Anzahl LEDs - 1 + 5). Die - 1 bezieht sich auf die Nutzung vom Index. Die 5 ist für die 5 gleichzeitig leuchtenden LEDs.
Pro Schleifendurchlauf kannst du deine Zähler Variable zum Anschalten der LED nutzen.
Zum Ausschalten nutzt du den (Zähler - 5).
In beiden Fällen musst du beim LED Zugriff aufpassen, dass wenn der Zähler kleiner 0 ist, nichts gemacht wird. Dazu das gleiche, wenn der Zähler größer oder gleich der Anzahl der LEDs ist.
Nach jedem Schleifendurchlauf musst du warten mit delay. Eventuell musst du manuell noch neopixel.show() (oder vergleichbares) aufrufen, um die LEDs tatsächlich zu verändern.
Mit diesem Konzept, wie du es umsetzen könntest, solltest du es selber hinbekommen. Du brauchst die delay Funktion, NeoPixel Library mit Index Zugriff, For Schleife und If Abfragen.
Die NeoPixel Library könnte auch schon einige Animationen bereitstellen. Eventuell findest du auch dort etwas passendes.