Zum Inhalt springen

WS2812 – Der einfachste Weg, viele LEDs mit Arduino steuern

    Bei den WS2812 LEDs handelt es sich um adressierbare RGB-LEDs. Sie verfügen über einen integrierten Chip. Um per Arduino WS2812 LEDs zu steuern, benötigt man nur einen einzigen digitalen Output. Trotzdem lässt sich jede einzelne LED in Farbe und Helligkeit gesondert ansprechen.

    Arduino WS2812 – Einleitung

    Wenn man LEDs mit Arduino steuern möchte, dann stößt man schnell an die Grenzen der verfügbaren Kanäle. Gerade RGB-LEDs benötigen jeweils gleich drei wertvolle analoge Kanäle (rot, grün, blau).

    Die WS2812-LEDs bieten dafür eine elegante Lösung. Sie verfügen über einen integrierten Controller. Ein Datensignal vom Arduino-Board bestimmt dann, in welcher Farbe der Controller die LED leuchten lassen soll. Darüber hinaus lassen sich viele WS2812-LEDs hintereinander schalten.


    Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


    WS2812 LEDs

    WS2812 Arten


    Jede LED mit WS2812 Controller verfügt über vier Anschlüsse. 5V+, GND, DI und DO. DI steht für Data In, DO für Data Out. Es gibt unterschiedliche WS2812 Strips und LEDs. Die Belegung der Anschlüsse kann variieren.

    Stromversorgung

    Arduino WS2812 Schaltplan


    Zuerst sehen wir uns die Stromversorgung an. Jede WS2812 LED benötigt bis zu 60mA. Es ist also ratsam, ein Netzteil zu verwenden. Dieses Netzteil sollte mit einem Elektrolyt-Kondensator (1000uF, 6,3V) unterstützt werden. Der GND des Netzteils und der GND des Arduino-Boards müssen verbunden werden.

    Datenanschluss

    Nun kann man einfach einen digitalen Kanal des Arduinos über einen Widerstand (300 – 500 Ohm) mit dem Din der ersten LED verbinden. Ihr Dout wird dann wiederum mit dem Din der nächsten LED verbunden usw. Der Widerstand ist nur vor der ersten LED nötig.

    Funktionsweise

    WS2812 Funktionsweise


    Über einen digitalen Pin des Arduinos werden Farbinformationen in einer Sequenz übertragen. Die erste LED nimmt den ersten Farbwert und leuchtet entsprechend. Die restlichen Informationen werden über den DO-Pin an die nächste LED übertragen.

    Code

    Um die WS2812 LEDs mit Arduino steuern zu können, benötigst du die NeoPixel-Library von Adafruit. Öffne in der Arduino IDE (Software) das Menü Sketch>Bibliotheken einbinden>Bibliotheken verwalten … und suche im Suchfeld nach NeoPixel. Installiere die Adafruit NeoPixel-Library von Adafruit in der aktuellen Version. Unter Datei>Beispiele>Adafruit NeoPixel>simple findest du folgendes Beispiel:

    #include <Adafruit_NeoPixel.h>
    #include <avr/power.h>
    
    #define PIN            6
    #define NUMPIXELS      10
    
    Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
    
    int delayval = 500;
    
    void setup() {
      pixels.begin();
    }
    
    void loop() {
      for(int i=0;i<NUMPIXELS;i++){
        pixels.setPixelColor(i, pixels.Color(255,255,255)); // Moderately bright green color.
        pixels.show(); // This sends the updated pixel color to the hardware.
        delay(delayval); // Delay for a period of time (in milliseconds).
      }
    }

    Jetzt kann man einfach NUMPIXELS auf die Menge der LEDs einstellen, wie man verwenden will. Über den Befehl

    pixels.setPixelColor(ledNumber, pixels.Color(255,255,255));

    lässt sich nun jede gewünschte Farbe (pixels.Color(255,255,255)) auf jede LED (ledNumber – Position der LED in der Reihe) anwenden.

    Ich empfehle, sich auch mal das Beispiel>Strandtest anzusehen. In diesem Beispiel sind schon ein paar Animationsfolgen eingebaut.

    Arduino WS2812 – Worauf muss man beim Kauf achten?

    WS2812 LEDs gibt es als LED-Strips mit integrierten LEDs. Diese Strips sind biegsam. Es gibt sie in unterschiedlichen IP-Schutzarten:

    • IP30
      • Kontakte sind frei zugänglich, kein Schutz vor Wasser oder Staub
      • Hierbei handelt es sich um die reinen flexiblen Platinen mit aufgebrachten Widerständen und LEDs. Zum Experimentieren super geeignet, da man sie einfach an den Kontaktstellen mit einer Schere zerschneiden kann
    • IP65
      • Kontakte sind auf der Oberseite versiegelt, kein Schutz vor Wasser
      • Schwer zu zerschneiden
    • IP67
      • Vollständig gegen Berührung geschützt, können zeitweilig in (Süß-) Wasser untergetaucht werden
      • Hierbei befindet sich der flexible Strip in einer Silikon-Hülle, die an den Enden versiegelt ist.

    Darüber hinaus unterschieden sich die Strips in der Anzahl der LEDs pro laufendem Meter. Das können 60, 100 oder 144 LEDs sein. Hier muss man aufpassen, da die Hersteller gern Strips á 5 Meter verkaufen und dann die Gesamtanzahl der LEDs angeben: 150, 500 oder 750. Persönlich finde ich das Verhältnis 60LED/m super geeignet. Hier sind die LEDs jeweils 1,66 cm aufgebracht. Dazwischen befindet sich eine gut zu trennende Anschlussstelle. Es kommt aber natürlich immer auf den Anwendungszweck an. Übrigens kann es nicht schaden, Anschlussstecker zu kaufen. Diese sind normiert und machen den Umgang mit WS2812 LEDs erheblich leichter.

    Kaufen kann man NeoPixel direkt bei Adafruit und man findet auch einiges bei Amazon. Mit den hier unten abgebildeten Produkten habe ich gute Erfahrungen gemacht.

    Arduino WS2812 LED Strip

    WS2812 LEDs auf Amazon ansehen.

    Arduino WS2812 LED Strip

    WS2812 LEDs auf Amazon ansehen.

    Arduino WS2812 als 5mm LED

    Im unteren Beispiel habe ich diese 5mm LEDs verwendet.

    ws2812 Anschluss Arduino NeoPixel

    Übrigens: Die WS2812 LEDs gibt es auch als 5mm LEDs. Die Pin-Belegung ist DI, 5V+, GND (längstes Beinchen), DO.

    Inspiration

    Und was machen wir jetzt mit diesem Wissen? Hier ein paar Projekte mit WS2812 LEDs:

    Arduino Valentinstag Romantisches Wandlicht
    Arduino Valentinstag: Romantisches Wandlicht
    Arduino Halloween Kürbis
    Halloween-Kürbis mit WS2812-LED-Augen
    Glowboard
    Glowboard mit WS2812 LED-Strips

    Hier noch ein Video zum Glowboard:

    Wir benötigen Ihre Zustimmung um den Inhalt von YouTube laden zu können.

    Mit dem Klick auf das Video werden durch den mit uns gemeinsam Verantwortlichen Youtube [Google Ireland Limited, Irland] das Video abgespielt, auf Ihrem Endgerät Skripte geladen, Cookies gespeichert und personenbezogene Daten erfasst. Damit kann Google Aktivitäten im Internet verfolgen und Werbung zielgruppengerecht ausspielen. Es erfolgt eine Datenübermittlung in die USA, diese verfügt über keinen EU-konformen Datenschutz. Weitere Informationen finden Sie hier.

    Jmx0O2RpdiBjbGFzcz0mcXVvdDtudi1pZnJhbWUtZW1iZWQmcXVvdDsmZ3Q7Jmx0O2lmcmFtZSB0aXRsZT0mcXVvdDtXaWUgYmF1dCBtYW4gZWluIEdsb3dib2FyZCBtaXQgQXJkdWlubz8mcXVvdDsgd2lkdGg9JnF1b3Q7MTIwMCZxdW90OyBoZWlnaHQ9JnF1b3Q7Njc1JnF1b3Q7IHNyYz0mcXVvdDtodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC80RXZyVmo0Y05Hbz9mZWF0dXJlPW9lbWJlZCZxdW90OyBmcmFtZWJvcmRlcj0mcXVvdDswJnF1b3Q7IGFsbG93PSZxdW90O2FjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBjbGlwYm9hcmQtd3JpdGU7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmU7IHdlYi1zaGFyZSZxdW90OyBhbGxvd2Z1bGxzY3JlZW4mZ3Q7Jmx0Oy9pZnJhbWUmZ3Q7Jmx0Oy9kaXYmZ3Q7

    Referenzen

    NeoPixel Best Practices
    NeoPixel Library Installation


    Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

    • Die beliebtesten Arduino-Projekte von StartHardware
    • Inklusive Schaltplan, Beschreibung und Code
    • Arduino-Schnellstart-Kapitel
    • Kompakter Programmierkurs