WS2812 RGB-LED-Streifen

Überblick

In dieser Lektion lernen Sie NeoPixel-LEDs und ihre Steuerung mit der FastLED-Bibliothek auf einem Arduino Uno R4 kennen. NeoPixel-LEDs werden in verschiedenen Anwendungen wie Heimdekoration, tragbaren Geräten und Eventbeleuchtung verwendet. Die FastLED-Bibliothek vereinfacht die Programmierung dieser LEDs. Hier wird eine Kette von 8 NeoPixel-LEDs an einen Arduino angeschlossen, und jede LED in der Reihe leuchtet kurz in blauer Farbe auf, bevor sie sich ausschaltet und zur nächsten LED in der Kette übergeht. Dieses einfache Beispiel kann als Grundlage für komplexere Lichtmuster oder interaktive Beleuchtungsprojekte dienen.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

Es ist definitiv praktisch, ein komplettes Kit zu kaufen, hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

Elite Explorer Kit

300+

Elite Explorer Kit

Sie können die Komponenten auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

Arduino Uno R4 WiFi

-

Jumperkabel

BUY

WS2812 RGB 8 LEDs Streifen

BUY

Verdrahtung

../_images/12-ws2812_bb.png

Schaltplan

../_images/12_ws2812_schematic.png

Code

Bemerkung

  • Sie können die Datei 12-ws2812.ino direkt unter dem Pfad elite-explorer-kit-main\basic_project\12-ws2812 öffnen.

  • Oder kopieren Sie diesen Code in die Arduino IDE.

Bemerkung

Um die Bibliothek zu installieren, verwenden Sie den Arduino Library Manager und suchen Sie nach „FastLED“ und installieren Sie diese.

Nachdem der Code erfolgreich hochgeladen wurde, werden Sie sehen, wie jede LED in der Kette von 8 NeoPixel-LEDs nacheinander in blauer Farbe aufleuchtet. Das Programm wird diese Sequenz kontinuierlich durchlaufen, wobei jede LED ausgeschaltet wird, bevor sie zur nächsten übergeht. Mit einer kurzen Verzögerung zwischen jeder LED erscheint der Beleuchtungseffekt wie ein entlang der Kette reisender blauer Punkt.

Code-Analyse

  1. Bibliothek importieren und Konstanten einrichten

    • Import der FastLED-Bibliothek, um ihre Funktionen zu nutzen.

    • Definition der Anzahl der LEDs und des Datenpins, an den sie angeschlossen sind.

    #include <FastLED.h>  // Include FastLED library
    #define NUM_LEDS 8    // Number of LEDs in the chain
    #define DATA_PIN 6    // Data pin for LED control
    
  2. LED-Array initialisieren

    Erstellen eines Arrays vom Typ CRGB, um die Farbinformationen jeder LED zu speichern.

    CRGB leds[NUM_LEDS];  // Array to hold LED color data
    
  3. LEDs in Setup initialisieren

    Verwendung von FastLED.addLeds, um die LEDs zu initialisieren.

    void setup() {
      FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);  // Initialize LEDs
    }
    
  4. LEDs in Loop steuern

    Durch jede LED iterieren, um sie blau zu setzen, anzuzeigen, zu löschen und dann zu verzögern.

    • Das leds-Array dient als Farbpuffer für Ihren LED-Streifen. Jedes Element in diesem Array entspricht einer einzelnen LED auf Ihrem physischen Streifen, und sein Farbwert bestimmt die Farbe, die die LED anzeigen wird. Die Reihenfolge der Elemente im Array entspricht der Reihenfolge der LEDs auf dem Streifen, beginnend mit der ersten LED (die leds[0] entspricht) bis zur letzten LED. Um die Farbe einer bestimmten LED auf Ihrem Streifen zu ändern, ändern Sie einfach das entsprechende Element im leds-Array. Sie können predefined colors verwenden oder Farben mit RGB einstellen (Grün als Beispiel, verwenden Sie leds[dot] = CRGB::Green oder leds[dot] = CRGB(0, 255, 0);).

    • Die Funktion FastLED.show(); aktualisiert den LED-Streifen mit neuen Farbdaten und macht Änderungen sichtbar. Es ist wie das Drücken des „Veröffentlichen“-Knopfs für Ihren LED-Streifen, nachdem Sie Änderungen und Anpassungen im Code vorgenommen haben.


    void loop() {
      for (int dot = 0; dot < NUM_LEDS; dot++) {
        leds[dot] = CRGB::Blue;   // Set the current LED to blue
        FastLED.show();           // Update LEDs
        leds[dot] = CRGB::Black;  // Clear the current LED
        delay(30);                // Wait for a short period before moving to the next LED
      }
    }