Bauteile · 6 Min. Lesezeit

WS2812B NeoPixel LED-Streifen mit Arduino: adressierbare RGB-LEDs

Was ist eine WS2812B NeoPixel und wie wird sie angeschlossen? Adressierbare RGB-LED-Streifen, -Ringe und -Matrizen, Leistungsberechnung, Adafruit-NeoPixel- und FastLED-Code, Regenbogeneffekt, ESP32 und Pico.

Die WS2812B ist eine RGB-LED mit eingebautem Treiberchip. Während eine normale RGB-LED für jede Farbe einen eigenen Pin braucht, steuerst du mit der WS2812B hunderte LEDs über eine einzige Datenleitung und gibst jeder ihre eigene Farbe und Helligkeit. NeoPixel ist der Name, den Adafruit dieser Familie adressierbarer LEDs gegeben hat. Als Streifen, Ringe, Sticks und Matrizen erhältlich, stecken sie in unzähligen Projekten – von Ambientebeleuchtung und LED-Uhren bis zu Spielen und Benachrichtigungslampen.

Abschnitt eines adressierbaren WS2812B-RGB-LED-Streifens
Ein einzelner WS2812B-Streifenabschnitt: Die Daten kommen links über den Eingang DI und gehen rechts über den Ausgang DO zur nächsten LED. Der Pfeil zeigt die Datenrichtung.

Wie funktioniert die WS2812B?

Im 5x5 mm großen Gehäuse jeder WS2812B stecken drei winzige LEDs in Rot, Grün und Blau sowie ein Mini-Chip, der sie ansteuert. Der Arduino schickt nacheinander 24-Bit-Farbpakete über die Datenleitung: 8 Bit Grün, 8 Bit Rot, 8 Bit Blau (Reihenfolge GRB). Die erste LED behält die ersten 24 Bit für sich und reicht den Rest über ihren DO-Pin an die nächste LED weiter; jede LED macht es genauso. Bleibt die Datenleitung mindestens 50 Mikrosekunden (bei neueren Versionen 280) auf LOW, zeigen alle LEDs ihre Farbe gleichzeitig an. Mit 256 Stufen pro Farbe kann eine einzige LED 16,7 Millionen Farben darstellen.

EigenschaftWert
Versorgungsspannung5 V (3,5–5,3 V)
Strom pro LEDBis ~60 mA (voll weiß), ~1 mA ausgeschaltet
Datenrate800 kHz, eine Leitung
FarbreihenfolgeGRB (Grün, Rot, Blau)
Farbtiefe24 Bit, 16,7 Millionen Farben
Gehäuse5050 SMD (5x5 mm)

Streifen, Ringe und Matrizen

ArtAnzahl LEDsTypischer Einsatz
Streifen30, 60 oder 144 pro MeterAmbientebeleuchtung, TV-Hintergrund, Regalbeleuchtung
Ring8, 12, 16, 24LED-Uhr, Anzeige, Schreibtischlampe
Matrix8x8 = 64, 16x16 = 256Lauftext, Animationen, Pixelspiele
Stick8Pegelanzeige, Statuslicht
WS2812B NeoPixel-Ring mit 24 LEDs
NeoPixel-Ring mit 24 LEDs: ideal für LED-Uhren und runde Anzeigen; auf einem 12-Stunden-Zifferblatt steht jede LED für eine halbe Stunde.

WS2812B anschließen

Die WS2812B hat drei Anschlüsse: 5V, GND und DIN (Dateneingang). Die Pfeile auf dem Streifen zeigen die Flussrichtung der Daten; schließe den Arduino immer an das Ende an, an dem die Pfeile beginnen, also an die DIN-Seite. Ein 330–470 Ω-Widerstand in Reihe zur Datenleitung und ein 1000 µF-Kondensator zwischen 5V und GND am Stromeingang des Streifens schützen die erste LED vor plötzlichen Spannungsspitzen.

WS2812B-PinAnschluss
5VFür wenige LEDs Arduino 5V, für mehr ein externes 5-V-Netzteil
GNDGND (mit externem Netzteil muss die Masse mit dem Arduino gemeinsam sein)
DIND6 (über einen 330-Ω-Widerstand)
DOUTDIN der nächsten LED oder des nächsten Streifens
Versorge viele LEDs nicht über den 5V-Pin des Arduino: USB liefert höchstens 500 mA, und schon eine einzige LED kann bei vollem Weiß 60 mA ziehen. Versorge den Streifen mit einem externen 5-V-Netzteil, verbinde dessen GND unbedingt mit dem GND des Arduino und stecke die Datenleitung bei eingeschalteter Schaltung nie vor GND ein – sonst kann die erste LED kaputtgehen.

Leistungsberechnung: Wie viel Ampere brauchst du?

Die Formel für den ungünstigsten Fall ist einfach: Anzahl LEDs × 60 mA. In Animationen leuchten selten alle LEDs gleichzeitig voll weiß; in der Praxis sind es im Schnitt etwa 20 mA pro LED. Trotzdem solltest du das Netzteil für den ungünstigsten Fall auswählen oder die Helligkeit per Software begrenzen. Die Leistung in Watt berechnest du mit dem Werkzeug Ohmsches Gesetz, die Laufzeit von Akkuprojekten schätzt du mit dem Werkzeug Akkulaufzeit.

Anzahl LEDsUngünstigster Fall (voll weiß)Empfohlene Versorgung
80,48 AUSB reicht (begrenzte Helligkeit)
301,8 A5-V-Netzteil, 3 A
603,6 A5-V-Netzteil, 4 A
1448,6 A5-V-Netzteil, 10 A
Bei langen Streifen verlieren die dünnen Kupferbahnen Spannung, und das Ende des Streifens wirkt gelblich oder rötlich. Führe deshalb alle 1–2 Meter 5V und GND erneut vom Netzteil an den Streifen (Einspeisung). Die Helligkeit auf 20–30 % zu senken, verringert den Strom außerdem deutlich, ohne dass das Auge einen großen Unterschied sieht.

Der erste Code mit der Bibliothek Adafruit NeoPixel

Suche im Bibliotheksverwalter nach Adafruit NeoPixel und installiere sie. Der folgende Code „wischt“ den Streifen mit einer Farbe, indem er die LEDs nacheinander rot, grün und blau leuchten lässt:

Arduino (C++)
1#include <Adafruit_NeoPixel.h>
2
3#define PIN 6          // DIN pini / data pin
4#define NUM_LEDS 8     // LED sayısı / number of LEDs
5
6Adafruit_NeoPixel strip(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
7
8void setup() {
9  strip.begin();
10  strip.setBrightness(50);   // 0–255, yalnız bir kez / only once
11  strip.show();              // hepsini söndür / all off
12}
13
14void colorWipe(uint32_t color, int wait) {
15  for (int i = 0; i < NUM_LEDS; i++) {
16    strip.setPixelColor(i, color);
17    strip.show();            // değişikliği gönder / send the change
18    delay(wait);
19  }
20}
21
22void loop() {
23  colorWipe(strip.Color(255, 0, 0), 80);   // kırmızı / red
24  colorWipe(strip.Color(0, 255, 0), 80);   // yeşil / green
25  colorWipe(strip.Color(0, 0, 255), 80);   // mavi / blue
26}

setPixelColor() ändert nur die Farbe im Speicher; damit die LEDs wirklich leuchten, musst du show() aufrufen. So kannst du die Farben aller LEDs festlegen und alle auf einmal anzeigen. Da setBrightness() die Farbdaten dauerhaft skaliert, rufst du es am besten einmal in setup() auf, statt es in loop() ständig zu ändern. Jede LED belegt 3 Byte im RAM des Arduino; die 2 KB des Uno sind bei hunderten LEDs schnell voll.

Regenbogeneffekt: HSV-Farben

Statt Farben über Rot-, Grün- und Blauwerte einzustellen, macht HSV (Farbton, Sättigung, Helligkeit) Effekte viel einfacher: Du wanderst durch den ganzen Farbkreis, indem du nur den Farbton änderst. In der Adafruit-Bibliothek reicht der Farbton von 0 bis 65535. gamma32() korrigiert die Farben passend zur Wahrnehmung des Auges, sodass Übergänge natürlicher wirken:

Arduino (C++)
1#include <Adafruit_NeoPixel.h>
2
3#define PIN 6
4#define NUM_LEDS 24
5
6Adafruit_NeoPixel strip(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
7
8void setup() {
9  strip.begin();
10  strip.setBrightness(40);
11}
12
13void loop() {
14  for (long first = 0; first < 65536; first += 256) {
15    for (int i = 0; i < NUM_LEDS; i++) {
16      uint16_t hue = first + i * 65536L / NUM_LEDS;   // her LED'e farklı ton / a different hue per LED
17      strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(hue)));
18    }
19    strip.show();
20    delay(10);
21  }
22}

Die Bibliothek FastLED

Für anspruchsvollere Effekte ist auch die Bibliothek FastLED sehr beliebt. Sie hält die LEDs in einem CRGB-Array, bietet gut lesbare Befehle wie leds[3] = CRGB::Red; und nutzt einen Farbtonbereich von 0–255. Fertige Funktionen wie fill_rainbow() und fadeToBlackBy() machen Feuer-, Sternschnuppen- oder Atemeffekte zu ein paar Zeilen Code. Besonders praktisch ist FastLED.setMaxPowerInVoltsAndMilliamps(5, 2000);: Die Bibliothek senkt die Helligkeit automatisch und hält den Strom unter 2 A.

Eine 8x8-NeoPixel-Matrix verwenden

Eine Matrix ist eigentlich nur ein langer Streifen: 64 LEDs hängen hintereinander an einer einzigen Datenleitung. Bei den meisten Matrizen verlaufen die Zeilen im Zickzack (Serpentine): gerade Zeilen von links nach rechts, ungerade von rechts nach links. Um eine x-y-Koordinate in eine LED-Nummer umzurechnen, nimmst du daher in geraden Zeilen y × 8 + x und in ungeraden y × 8 + (7 − x). Da 64 LEDs bei vollem Weiß 3,8 A ziehen können, ist eine niedrige Helligkeit bei Matrizen besonders wichtig.

8x8-WS2812B-NeoPixel-LED-Matrix
8x8-NeoPixel-Matrix: 64 adressierbare LEDs über eine einzige Datenleitung gesteuert; ideal für Lauftext und Pixelspiele.

WS2812B mit ESP32 und Raspberry Pi Pico

Die Bibliotheken Adafruit NeoPixel und FastLED laufen auch auf dem ESP32; dank WLAN steuerst du die LEDs ganz einfach vom Handy aus oder baust eine Lampe, die ihre Farbe je nach Wetter ändert. Achten musst du auf den Spannungspegel: Eine mit 5 V versorgte WS2812B erwartet am Dateneingang mindestens 3,5 V, ESP32 und Pico liefern aber 3,3 V. Die meisten Streifen funktionieren trotzdem; flackert jedoch die erste LED oder erscheinen zufällige Farben, setze einen Pegelwandler wie den 74AHCT125 in die Datenleitung. Auf dem Raspberry Pi Pico bringt MicroPython das Modul neopixel bereits mit:

MicroPython
1from machine import Pin
2import neopixel
3import time
4
5NUM = 8
6np = neopixel.NeoPixel(Pin(0), NUM)      # GP0 → DIN
7
8def wheel(pos):                          # 0–255 → renk çemberi / colour wheel
9    if pos < 85:
10        return (255 - pos * 3, pos * 3, 0)
11    if pos < 170:
12        pos -= 85
13        return (0, 255 - pos * 3, pos * 3)
14    pos -= 170
15    return (pos * 3, 0, 255 - pos * 3)
16
17j = 0
18while True:
19    for i in range(NUM):
20        r, g, b = wheel((i * 256 // NUM + j) & 255)
21        np[i] = (r // 5, g // 5, b // 5)  # parlaklığı düşür / dim it
22    np.write()
23    j = (j + 2) & 255
24    time.sleep_ms(20)

Projektideen mit der WS2812B

  • TV-Ambientelicht: Ein Streifen auf der Rückseite des Fernsehers taucht den Raum in sanftes Licht.
  • NeoPixel-Uhr: Stunden, Minuten und Sekunden in verschiedenen Farben auf einem Ring mit 60 LEDs anzeigen.
  • Pegelanzeige: Mit einem Mikrofonmodul eine LED-Leiste bauen, die mit der Lautstärke der Musik steigt.
  • Benachrichtigungslampe: Mit dem ESP32 die Farbe je nach Wetter oder neuer E-Mail aus dem Internet ändern.
  • Polizeilicht und Knight Rider: Rot-blaues Blinken oder hin und her laufende Lichteffekte programmieren.
  • Pixel-Snake: Das klassische Schlangenspiel mit einer 8x8-Matrix und einem Joystick nachbauen.

Typische Fehler und ihre Lösungen

  • Keine LED leuchtet: Der Arduino hängt am falschen Ende des Streifens, der DOUT-Seite; achte auf die Pfeile und nutze das DIN-Ende.
  • Farben vertauscht (grün statt rot): Die Farbreihenfolge stimmt nicht; nutze im Code NEO_GRB, manche Streifen brauchen NEO_RGB.
  • Die erste LED flackert oder zeigt zufällige Farben: Es fehlt der Reihenwiderstand, GND ist nicht gemeinsam oder das 3,3-V-Datensignal reicht nicht.
  • Das Streifenende wirkt gelblich: Es gibt einen Spannungsabfall; speise den Streifen an mehreren Stellen ein oder senke die Helligkeit.
  • Der Arduino startet neu, sobald die LEDs angehen: Es wird zu viel Strom über USB gezogen; nutze ein externes Netzteil und einen 1000-µF-Kondensator.
  • Nur die ersten paar LEDs leuchten: NUM_LEDS im Code ist kleiner als die tatsächliche Anzahl, oder irgendwo im Streifen ist eine Verbindung unterbrochen.

Die WS2812B ist ein toller Einstieg, um zu verstehen, wie sich Farben mischen; die Farblogik findest du in RGB-LED verwenden, die Helligkeitssteuerung in Was ist PWM? In der BlueGrays-App findest du Projekte zu WS2812B-Grundlagen, Polizeilicht, Lauflicht, Knight-Rider-Lauflicht, Animationseffekten und zur NeoPixel-Streifensteuerung mit dem ESP32 – mit Schaltplänen und Code.

Häufige Fragen

Was ist der Unterschied zwischen WS2812B und NeoPixel?

NeoPixel ist der Markenname von Adafruit für adressierbare LEDs wie WS2812, WS2812B und SK6812. Alle nutzen dasselbe Datenprotokoll und werden daher mit denselben Bibliotheken auf dieselbe Weise gesteuert.

Wie viele WS2812B kann ich an einen Arduino anschließen?

Auf der Datenseite gibt es keine feste Grenze, aber drei Dinge begrenzen dich: der RAM (3 Byte pro LED, beim Uno in der Praxis einige hundert LEDs), die Aktualisierungszeit (30 Mikrosekunden pro LED; 1000 LEDs brauchen etwa 30 ms, also ~33 Bilder pro Sekunde) und die Stromversorgung.

Kann ich die WS2812B über den 5V-Pin des Arduino versorgen?

Nur wenige LEDs bei geringer Helligkeit; ein Stick mit 8 LEDs läuft zum Beispiel bei einer Helligkeit um 50 über USB. Für mehr LEDs nimm ein externes 5-V-Netzteil und verbinde die Massen.

Sind Widerstand und Kondensator wirklich nötig?

Zwingend nicht, aber dringend empfohlen. Der 330–470-Ω-Widerstand in der Datenleitung glättet Spitzen im Signal und schützt die erste LED; der 1000-µF-Kondensator am Stromeingang fängt den Einschaltstromstoß ab.

Funktioniert die WS2812B mit dem ESP32 und 3,3-V-Boards?

Meistens, aber nicht garantiert: Eine mit 5 V versorgte WS2812B erwartet am Dateneingang mindestens 3,5 V. Siehst du Flackern oder falsche Farben, hebe das Datensignal mit einem Pegelwandler wie dem 74AHCT125 auf 5 V an.

Was unterscheidet WS2812B, WS2811, WS2813 und SK6812?

Der WS2811 ist ein separater Treiberchip und steuert meist auf 12-V-Streifen drei LEDs gemeinsam. Die WS2813 hat eine Reserve-Datenleitung, sodass die Kette auch bei einer defekten LED weiterläuft. Die SK6812 ist eine kompatible Alternative und gibt es auch als RGBW-Version mit weißer LED; dafür nutzt du im Code NEO_GRBW.

Alle Projekte ansehen
WS2812B-LED-Streifen verwenden
#69Mittel
Premium

WS2812B-LED-Streifen verwenden

Projekt zur Demonstration der grundlegenden Verwendung des adressierbaren LED-Streifens WS2812B durch unabhängige Einstellung der Farbe jeder LED. Lehrt die pixelbasierte Farbsteuerung mit der FastLED

4.8(54)
70
Polizeilicht mit WS2812B
#70Mittel
Premium

Polizeilicht mit WS2812B

Projekt zur Erzeugung eines Polizeistrobe-Effekts durch schnelles Blinken der Farben Rot und Blau mit WS2812B-LED-Streifen. Lehrt die gruppenbasierte LED-Steuerung und die Timing-Logik der Animation.

4.8(67)
86
WS2812B-Lauflicht
#71Mittel
Premium

WS2812B-Lauflicht

Ein Projekt, das einen Lauflichteffekt erzeugt, indem es eine einzelne LED auf einem WS2812B LED-Streifen sequentiell vorwärts bewegt. Lehrt pixelbasierte sequentielle Animationslogik.

4.8(58)
75
WS2812B-Lauflicht (auffüllend)
#72Mittel
Premium

WS2812B-Lauflicht (auffüllend)

Ein Fill-Drain-Animationsprojekt, das LEDs auf einem WS2812B-LED-Streifen akkumuliert, indem es sie nacheinander zum Leuchten bringt und sie dann nacheinander wieder löscht. Lehrt die Logik der akkumu

4.7(50)
65
WS2812B Knight-Rider-Lauflicht
#73Mittel
Premium

WS2812B Knight-Rider-Lauflicht

Projekt zur Erzeugung eines Knight-Rider-Lauflichts durch Hin- und Herbewegen einer einzelnen LED auf dem WS2812B LED-Streifen. Lehrt die bidirektionale Pixelanimation.

4.9(73)
94
WS2812B Black Thunder 3-teilig
#74Mittel
Premium

WS2812B Black Thunder 3-teilig

Projekt zur Erstellung einer kontinuierlich wechselnden Regenbogen-Farbübergangsanimation auf einem WS2812B LED-Streifen unter Verwendung des HSV-Farbraums. Lehrt die Verwendung des CHSV-Farbmodells u

4.8(61)
79
WS2812B Animation 1
#75Mittel
Premium

WS2812B Animation 1

Projekt zur Erstellung einer kontinuierlichen Regenbogenanimation mit HSV-Farbraum auf WS2812B-LED-Streifen. Es lehrt die Logik des sanften Farbübergangs durch Änderung des Farbtonwerts in Abhängigkei

4.9(69)
89
WS2812B Animation 2
#76Mittel
Premium

WS2812B Animation 2

Fortschrittliches Animationsprojekt mit FastLED-Palettensystem auf WS2812B-LED-Streifen, das automatisch verschiedene Farbpaletten wie Regenbogen, Wolke, Party usw. in Abhängigkeit von der Zeit ändert

4.8(65)
84
Steuerung des ESP32 WS2812B NeoPixel-Streifens
#126Mittel
Premium

Steuerung des ESP32 WS2812B NeoPixel-Streifens

WS2812B (NeoPixel) adressierbare LEDs sind intelligente RGB-LEDs, die über einen einzigen Datenpin in Reihe geschaltet gesteuert werden können. In diesem Projekt werden wir einen WS2812B-Streifen mit 8 LEDs mithilfe der Adafruit_NeoPixel-Bibliothek steuern und eine fließende Regenbogenanimation erzeugen. Obwohl der 3,3-V-Logikpegel des ESP32 bei den meisten WS2812B-Bausteinen problemlos funktioniert, zeigen wir im Falle von Instabilität die Lösung mit einem 470-Ω-Reihenwiderstand und einem 1000-

4.9(19)
30

Lerne Schritt für Schritt, wie du hunderte RGB-LEDs über eine einzige Datenleitung steuerst, einen WS2812B-Streifen richtig anschließt, den Strombedarf berechnest und Regenbogeneffekte programmierst.

WS2812B NeoPixel LED-Streifen mit Arduino: adressierbare RGB-LEDs | BlueGrays