Arduino: WS2812B LED’s mit FastLED ansteuern

Auch dieses Jahr neigt sich langsam dem Ende zu und Weihnachten rückt immer näher, darum sollte man sich langsam auch über eventuelle Lichterketten bemühen. Da allerdings normale Weihnachtsbeleuchtung eher öde ist, zeigen wir euch in diesem Artikel wie ihr einzeln ansteuerbare WS2812B-LED’s für diesen Zweck verwenden könnt. Neben dem Anschluss des LED-Strips an euren Arduino zeigen wir euch auch die Verwendung der FastLED-Library. 

Einkaufsliste

Um einen WS2812B-LED-Strip mittels Arduino anzusteuern, benötigt ihr neben einem Widerstand eigentlich nur noch ein passendes Netzteil – alle benötigten Komponenten findet ihr wie immer hier verlinkt:

WS2812B (1 Meter) – Preis ca. 15 Euro – siehe z.B. bei Amazon*

Arduino Nano – Preis ca. 8 Euro – siehe z.B. bei Amazon*

LED Netzteil 5V, 5A – Preis ca. 15 Euro – siehe z.B. bei Amazon*

510 Ohm Widerstand  – Set-Preis ca. 12,5 Euro – siehe z.B. bei Amazon*

Litze / Verbindungskabel – Preis ca. 7 Euro – siehe z.B. bei Amazon*

Lötkolben Set – Preis ca. 20 Euro – siehe z.B. bei Amazon*

Info: Beachtet auch unsere Kaufhinweise zu WS2812B-LED-Strips, in diesem separaten Artikel gehen wir unter anderem auf die maximale LED-Länge sowie das benötigte Netzteil ein.

Schaltbild

Einen WS2812B-Strip könnt ihr in der Regel recht einfach an den Arduino Nano anschließen, zunächst verbindet das (oftmals) beiliegende Anschlussstück wie folgt: Rot auf VIN des Arduinos, Weiss / Schwarz (GND) auf GND, Grün / Blau (DI) in Kombination mit einem 510 Ohm Widerstand an den D3-Pin.

Anmerkung: Ihr solltet immer einen Widerstand zwischen 460 und 510 Ohm am Ansteuerungspin verwenden, da sonst eventuelle Spannungsspitzen die jeweils erste LED zerstören könnten.

Die beiden anderen Roten und Weissen Kabel schließt ihr an euer 5 Volt Netzteil an – damit versorgt ihr gleichzeitig sowohl den LED-Strip wie auch den Arduino mit Strom. Zum besseren Verständnis haben wir euch hier nochmal ein Schaltbild aufgeführt:

schaltplan-ws2812b-arduino

FastLED einbinden

Steckt nun euren Arduino Nano zunächst am Übergangsstück wieder aus und verbindet diesen mittels USB mit eurem Rechner. Zunächst laden wir uns dann die aktuelle FastLED-Library über GitHub herunter und installieren diese in unserer Arduino IDE.

Greift nun auf die vorhandenen Fast-LED Beispielprogramme zu, dazu öffnet ihr das Testprogramm „DemoReel100“ in der Arduino IDE.

demoreel100

Programm anpassen

Bevor wir mit dem eigentlichen Upload des Programm’s beginnen können, müssen wir zunächst einige Änderungen durchführen. Unter anderem müssen wir beispielsweise den passenden LED-Strip dem Demoprogramm zuweisen, dazu ändern wir den Eintrag „#define LED_TYPE WS2811“ auf „#define LED_TYPE WS2812B“ um:

led-type

Nun widmen wir uns dem Ansteuerungspin zu, da wir unseren LED-Strip gerne mit dem D3-Pin ansteuern möchten müssen wir auch dies entsprechend abändern:

data-pin

Weiterhin ist es notwendig die LED-Anzahl im Programm anzugeben, ein ein Meter LED-Strip hat in der Regel 30, 60 oder bis zu 144 LED’s – gebt hier dementsprechend die richtige Zahl an (wir verwenden einen WS2812B-Strip mit 60 LED’s):

num-leds

Zuletzt können wir noch die Leuchtstärke unseres LED-Strips angeben, für den Dauerbetrieb empfehlen wir euch eine Helligkeit von bis zu 60 oder 100, bei dem Maximalwert von 255 können die LED’s dagegen sehr warm werden und dadurch deutlich an Lebensdauer einbüßen:

brightness

Programm hochladen & Erster Test

Nun legen wir in den Einstellungen noch das passende Arduino Nano Board fest und wählen den richten Port aus:

board-port

Direkt danach können wir auch unser Demoprogramm auf den Arduino hochladen.

Anschließend trennen wir die USB-Verbindung und schließen den Arduino samt Verbindungsstück an den WS2812B-LED-Strip an, danach stecken wir noch das Netzteil in die Steckdose um das ganze mit Strom zu versorgen.



WS2812B LED Strips mit dem Arduino ansteuern. (Bild: Xgadget.de)
Datum:
30.10.2016, 17:24 Uhr
Aktualisiert:
01.08.2021, 23:01 Uhr
Autor:
Stefan Kröll
Comments:
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

15 Comments zu "Arduino: WS2812B LED’s mit FastLED ansteuern"

  1. Marvin sagt:

    Gibt es eine Möglichkeit mit einem taster zwischen den Animationen oder Farben zu wechseln?
    Danke
    LG Marvin

    1. schwesterstefan sagt:

      jipp du brauchst n Array deiner Funktionen (congetti etc) . die
      https://github.com/JChristensen/Button libary (den button gegen masse von nem Interrupt pin schalten

      n bissl Code

      void readbutton() {
      myBtn.read();
      if(myBtn.wasReleased()) {
      nextPattern();
      }

      Readbutton im loop aufrufen . nextpattern ruft dann die nächste funktion aus deinem Array auf .

      und zack fertig 😉

  2. Paul sagt:

    Vielen Dank für diese Anleitung 🙂

    1. JB sagt:

      auf der neusten Version gibt es das beispielprogaram nicht mehr:(

  3. Jonas sagt:

    Hallo
    Ich habe alles so wie in der Anleitung beschrieben ausgeführt, allerdings habe ich einen Arduino pro micro benutzt und dementsprechend statt dem VIN Pin den RAW Pin verwendet, doch egal wie lang der Streifen ist, es leuchtet immer nur die erste LED.
    Was könnte ich falsch gemacht haben?
    LG Jonas

  4. Daniel sagt:

    Hallo, ich bin neu in der Arduino Szene und möchte mich an gerne daran versuchen.
    Das meiste ist klar, nur habe ich noch zwei Fragen dazu.
    1. Ich habe gehört, dass man einen Kondensator mit verwenden sollte.
    2. Ist es möglich, einen 5m / 300 LED´s mobil zu betreiben? Sprich per Akkus oder Powerbank? Errechnet müsste ich 5v 18A liefern.

    Viele Grüße aus dem Schwarzwald.
    Daniel

    1. Stefan sagt:

      Hallo,
      habe bislang meine WS2812B LED’s immer ohne Kondensator betrieben – funktioniert in der Regel problemlos.
      Ganze mit 300 LED’s mit einer Powerbank zu betreiben wird in der Tat schwierig werden. Sonst müsstest du wirklich einen teuren mobilen Akku mit Schuko/Eurostecker Output (ab ca. 150 Euro) verwenden und dort noch ein passendes Netzteil anbringen. Allerdings sind diese 18 Ampere ja wirklich nur die Maximalangabe bei maximaler Helligkeit.

  5. ahjaahok sagt:

    wieso nicht direkt den 5v port am arduino benutzen?

  6. William sagt:

    Guten Tag,
    ist es auch möglich einen RGB Strip mit 288 LEDs zu verwenden, oder benötigt man dann ein anderes Netzteil etc. ?
    Vielen Dank schon mal!

    1. GriLLe sagt:

      Hi
      Abhängig vom erwünschten Weiß-Anteil und daraus resultierendem Strom. Worst case:
      288 * 60E-3 ist 17,28 A
      Einspeisung ca. alle 50 LEDs, dann muss jede Einspeise-Stelle immer noch 3A liefern! Drahtstärke würde ich nicht unter 0,75mm für die 3A Leitungen gehen, 4mm für gemeinsame 18A-Leitung. Bedenke, dass Spannungsverluste bei kleinen Spannungen prozentuell mehr ausmachen, als an einer 220V-Leitung

  7. GriLLe sagt:

    Hallo
    Erstmal danke für die Beschreibung. Das bringt mich dazu, die Demos anzusehen.
    Zwei Punkte bleiben offen:
    * Was ist exakt der Grund für den Vorwiderstand in der Datenleitung. Den findet man immer wieder, aber keine fundierte Begründung – blos Vermutungen. Die „Spannungsspitzen“ sind mir deutlich zu schwammig. Die Versorgung des Controllers (sollte) 5 V betragen, der Ausgang kann nur 0 oder 5V liefern. Woher sollen Spitzen kommen? Warum schädigen die Spitzen nicht den Controller? (Der am Rande bemerkt in der hier angeführten Schaltung sowiso mit zu kleiner Versorgung läuft – siehe unten.) In den mir bekannten Datenblättern ist keine Einschränkung bezüglich Spannungsfestigkeit der Datenleitung des WS28xx zu finden. Selbst wenn der WS28xx keine Schutzstruktur im inneren hat, warum schützt die Schutzstruktur des Controllers nicht die WS28xx? Hat das mit Leitungslänge zu tun? Dann gehört der Widerstand möglichst nahe an den Eingang des LED-Streifens.
    * Der Pin VIN des Nano (und auch anderer Boards) ist dafür vorgesehen, die interne Versorgung des Controllers aus einer externen Spannung von 7 .. 15 Volt zu erzeugen. Dazu ist ein analoger Regler (typisch ein 7805 Derrivat oder z.B. ein LM1117-05) onboard. Der Regler ist NICHT imstande den benötigten Strom für die LEDS bereitzustellen. Daraus läßt sich folgende Korrektur ableiten: Bitte statt VIN den Pin 5V zur Versorgung des Controllers benutzen.
    Am Rande: Wenn man beim Pin VIN bleibt, wird der Controller mit Unterspannung versorgt, läuft, aber auch die Ausgangssignale sind kleiner. Instabilitäten sind zumindest nicht auszuschließen. Die WS-Chips scheinen allerdings stabil gegen diese Störungen.
    Gruß und *zirp*
    GriLLe

  8. Marie sagt:

    Guten Tag,

    kann man die WS2812B abhängig von dem Licht machen? Wie ein Dimmer Funktion? ( Je dunkler desto heller?) und wenn wir ausreichend Licht haben, sind die LED’s dann aus?

    Danke im Voraus.

    Liebe Grüße
    Marie

    1. Thomas Böhm sagt:

      ….natürlich geht das. Ein Helligkeitssensor an den Arduino, dann kann man die Helligkeit der LED an das Umgebungslicht anpassen… 🙂

  9. paul sagt:

    hallo,

    habe eben probiert, jedoch gibt es Problem mit dem Hochladen: -> Werkzeug-> Board: Nano mini -… und Programmer? welches ist richtig? Danke!

    gruß PAUL

  10. Horst Dopp sagt:

    Hallo, danke für den Beitrag.
    Eine kleine Anmerkung zum ersten Bild: Die externe 5V Versorgung sollte am Nano am 5V-Oin angeschlossen werden, nicht an V_in. V_in speist auf dem Nano einen 5V-Spannungsregler und sollte laut Spec mit >= 7V versorgt werden, der der Spannungsregler einen gewissen Spannungsabfall hat.
    Viele Grüße

* gesponserter Link
Blogverzeichnis - Bloggerei.de