Mehrere LEDs gleichzeitig Auswählen

Erstmal Hallo zusammen :wink:

Das wichtigste zuerst, mein Englisch ist super schlecht und Mathe geht so( brauch man ja beides zum Programmieren)

Ich hab mir die letzten Tage nen Arduino Nano, ein 5m Ws2812b Streifen mit 300 LEDs besorgt. Und natürlich gleich aufgebaut. Und benutze die FastLED library. Mit den Beispiel Sketch läuft alles wunderbar, wird aber mit der Zeit langweilig und wollte es mal selbst versuchen was zu Scripten.
So nun endlich zum Probleme, auf fastled wiki auf ich mir mal den Code

void loop() {
        for(int dot = 0; dot < NUM_LEDS; dot++) { 
            leds[dot] = CRGB::Blue;
            FastLED.show();
            // clear this led for the next time around the loop
            leds[dot] = CRGB::Black;
            delay(30);
        }
    }

Kopiert, soweit gut nur stell ich mir gerade die frage.
Wie bekomme ich mehrere led gleichzeitig zum Laufen?

Ich hoffe einer von euch könnte mir da etwas helfen

  1. indem Du mehrere LED einschaltest und nicht immer nur eine die Du dann wieder ausschaltest.
  2. hast Du ein 18A Netzteil? Soviel verbraucht der LED-Streifen wenn alle LED weiß leuchten.
 leds[dot] = CRGB::Blue;   // Speichert den Wert "Blue" an der Stelle "dot" ab
            FastLED.show();   // sendet Daten von Speicher an LED Streifen
            // clear this led for the next time around the loop
            leds[dot] = CRGB::Black;   // Speichert den Wert "Black" an der Stelle "dot" ab
            delay(30); //wartezeit.

Grüße Uwe

Hi

Durch led[Nummer_der_LED]=FARBE wird einem Pixel eine Farbe zugewiesen.
Nicht mehr, nicht weniger.
Erst durch das FastLED.show(); wird der aktuelle Datenhaufen zu den LEDs geschickt.

Wenn Du also jede 5.te LED erst Blau einstellst, dann ein Show, dann diese LEDs wieder löscht, und die ab der nächsten LED jede 5.te Blau einstellst, laufen alle 5 Pixel eine LED Richtung Ende.

Das delay(30); verlangsamt Das Alles so weit, daß Du von dem Spektakel auch 30ms was siehst.
Ohne würde nämlich direkt der nächste Durchgang der FOR-Schleife die nächsten Pixel setzen und anzeigen, löschen und wieder weiter machen.

Wenn Du +5 rechnen willst, um an eine LED-Nummer zu kommen, darf die Schleife aber nur bis NUM_LEDS-5 zählen (die Lib wird Da Sicherheiten eingebaut haben, ist aber unnötige Rechenzeit).

MfG

Ich denke ich habe mich falsch ausgedrückt... Ich möchte nicht das alle LEDs auf einmal leuchten, das werden die denk ich nie auf Dauer, ich möchte eher in richtung effekte gehen, kleines beispiel:YouTube kennt bestimmt jeder, ich möchte die einzelnen Effekte Scripten.

z.B den Effekt bei dem Video zwischen 0:34 - 0:40sek wo glaub 3 oder 4 gleichzeitig Leuchtende led zur andern Seite flitzen.

Was hält Dich ab?

Pixel setzen per LED[nummer]=farbe;
(wobei die Farbe hier als Typ CRGB übergeben werden muß)
Da setzt Du die Pixel, Die Du anders haben willst - wenn Du dort auf schwarz setzt, geht der entsprechende Pixel aus.

Die gesetzten Pixel zum Stripe schicken per FastLED.show(); - 1x, nicht bei jeder kleinen Änderung!

In Deinem Beispiel gibt 'dot' die Pixelnummer an, Die Du änderst.
Wenn dort nur ein Pixel geändert wird, wird wohl auch nur ein Pixel anders.

Schau Dir die Beispiele von FastLED an - etwas mehr, als einen Pixel nach dem Anderen, werden Die doch wohl hoffentlich in den Beispielen haben.

MfG

Bitte schaue mal, ob im Thema FastLed - Lauflicht als Sinuswelle / Lauflicht mit Schweif vorn und hinten eine passende Antwort enthalten ist.

Im Bibliotheksbeispiel DemoReel100.ino sollte auch ein Ansatz für Dich enthalten sein.