Arduino LED-Streifen löschen / schreiben

Giantursus

Lieutenant
Registriert
Apr. 2003
Beiträge
956
Hallo zusammen.
Eine bessere Überschrift ist mir jetzt nicht eingefallen.
Die Frage geht auch eher an die Leute die schon besser programmieren können.

zur Ausgangssituation.
Ich habe einen RGB-LED-Streifen mit WS2811 oder 2812B Controller und benutze die "Adafruit_NeoPixel.h"
jede LED ist somit einzeln ansteuerbar.

#
LEDstreifen.setPixelColor( 0, 255, 255, 255);
LEDstreifen.show();
#

wobei hier die 0 für die Pixelnummer steht und die drei Ziffern für den jeweiligen R,G,B,-Wert.
Die erste LED im Strang sollte somit weiß leuchten... tuts auch

wenn ich jetzt allerdings 100 LEDs habe und die sollen alle weiß leuchten bin ich damit unzufrieden wenn ich die obere Zeile 100mal wiederholen muss.

#
LEDstreifen.setPixelColor( 0, 255, 255, 255);
LEDstreifen.setPixelColor( 3, 255, 255, 255);
LEDstreifen.setPixelColor( 4, 255, 255, 255);
LEDstreifen.setPixelColor( 5, . . .
.
.
LEDstreifen.show();
#

jetzt hab ich überlegt das ganze in eine Schleife zu packen

#
int PixelNr = 100; // Global die Anzahl der LEDs deklariert
int z = 0; // Global einen Zähler...

if (z <= ledsGesamt && BedingungX == 1){ // Wenn Zähler kleiner oder gleich Anzahl LEDs ist und ...
LEDstreifen.setPixelColor( PixelNr, 255, 255, 255); // Hier wird das jeweilige Pixel mit Leuchtwerten versehen
LEDstreifen.show(); // Hier wird das Pixel geschrieben
(z ++); //Zähler bekommt +1 // und zwar so lange bis 100 erreicht ist
}
#

Das macht das ganze ja schon kürzer
gefällt mir aber immer noch nicht. Das was ich mache ist an sich schon sehr unübersichtlich und das würde es nicht besser machen. Zumal der jeweilige Zähler auch immer wieder zurückgesetzt werden müsste.

Die schlussendliche Frage ist:
Gibt es einen einzeiligen Befehl, um alle x-Pixel des Streifens auf eine Farbe zu setzen?
Vielleicht hatte ja schon mal einer von euch das Problem.
 
Kann der arduino keine "for-Schleife" ?
 
Hi,

was du suchst ist eine for-Schleife.

Generell gibt es von adafruit ein sehr gutes Tutorial: https://blog.adafruit.com/2013/08/30/adafruit-neopixel-uberguide/

Code:
#define LENGTH 100

for (int i=0;i<LENGTH;i++){
  strip.setPixelColor(i, 0, 0, 0);
}
strip.show()

Wenn du das ganze in ne Funktion packst ists leicht möglich den ganzen Strip auf die gleiche Farbe zu setzen.

Wenn Farbverläufe gewünscht sind kommt man über mehr mathe nicht drüber.

Weitere Fragen sind gerne wilkommen, aber ich glaube dir würde ein generelles Arduino-Tutorial durchaus bei den Basics helfen.
 
Zeroflow schrieb:
Hi,

was du suchst ist eine for-Schleife.


Code:
for (int i=0;i<LENGTH;i++){
  strip.setPixelColor(i, 0, 0, 0);
}

Ja das hilft..
an for-Schleife hab ich im Wahn nicht gedacht.

Wie so oft .. auf der Tür steht "ziehen" und du drückst
 
Zurück
Oben