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.

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.
| Eigenschaft | Wert |
|---|---|
| Versorgungsspannung | 5 V (3,5–5,3 V) |
| Strom pro LED | Bis ~60 mA (voll weiß), ~1 mA ausgeschaltet |
| Datenrate | 800 kHz, eine Leitung |
| Farbreihenfolge | GRB (Grün, Rot, Blau) |
| Farbtiefe | 24 Bit, 16,7 Millionen Farben |
| Gehäuse | 5050 SMD (5x5 mm) |
Streifen, Ringe und Matrizen
| Art | Anzahl LEDs | Typischer Einsatz |
|---|---|---|
| Streifen | 30, 60 oder 144 pro Meter | Ambientebeleuchtung, TV-Hintergrund, Regalbeleuchtung |
| Ring | 8, 12, 16, 24 | LED-Uhr, Anzeige, Schreibtischlampe |
| Matrix | 8x8 = 64, 16x16 = 256 | Lauftext, Animationen, Pixelspiele |
| Stick | 8 | Pegelanzeige, Statuslicht |

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-Pin | Anschluss |
|---|---|
| 5V | Für wenige LEDs Arduino 5V, für mehr ein externes 5-V-Netzteil |
| GND | GND (mit externem Netzteil muss die Masse mit dem Arduino gemeinsam sein) |
| DIN | D6 (über einen 330-Ω-Widerstand) |
| DOUT | DIN der nächsten LED oder des nächsten Streifens |
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 LEDs | Ungünstigster Fall (voll weiß) | Empfohlene Versorgung |
|---|---|---|
| 8 | 0,48 A | USB reicht (begrenzte Helligkeit) |
| 30 | 1,8 A | 5-V-Netzteil, 3 A |
| 60 | 3,6 A | 5-V-Netzteil, 4 A |
| 144 | 8,6 A | 5-V-Netzteil, 10 A |
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:
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:
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.

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:
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.
Projekte, die du danach bauen kannst
Alle Projekte ansehen
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

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.

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.

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

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.

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

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

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

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-
Weitere Artikel
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.
