zurück

RGB-LED-Modul WS2812B ("NeoPixel")

30.05.2018

WS2812B ist die Bezeichnung für ein spezielles, adressierbares RGB-LED-Modul mit einem integrierten Controller. Durch diesen internen Chip belegt das WS2812B nur einen einzigen digitalen Output des Mikrocontrollers (z.B. Arduino). Weiterhin ermöglicht der interne Controller einer serielle Schaltung mehrerer WS2812B-Module.
Das WS2812B gibt es sowohl als Einzelmodul als auch in Form von Strips (Bänder), Ringen, Matrizen (z.B. 4x4, 8x8) und anderen Ausführungen.

Einzelnes RGB-LED-Modul WS2812B
Abb.: Einzelnes RGB-LED-Modul WS2812B

Anschlüsse

Pinout von WS2812 und WS2812B
Abb.: Pinout von WS2812 und WS2812B
WS2812B Erklärung
5V (auch: VCC oder VDD) Stromversorgung mit +3,5V ~ +5,3V
GND (auch: VSS) Masseanschluss
DI bzw. DIN "Data In": Dateneingangsignal (wird mit dem Mikrocontroller verbunden)
DO bzw. DOUT "Data Out": Datenausgangsignal (kann mit DI des nächsten WS2812B verbunden werden)

Eigene Projekte mit dem WS2812B

Einfache Ansteuerung des WS2812B

Verwendete Bauteile

Aufbau

Jedes WS2812-Modul benötigt bis zu 60mA, wobei es von einem Stützkondensator geschützt werden sollte. Vor den Dateneingang wird zusätzlich ein Vorwiderstand geschaltet.

Aufbau auf dem Breadboard
Abb.: Aufbau auf dem Breadboard

Sketch

Der folgende Sketch demonstriert das Durchwechseln der Grundfarben des LED-Moduls nacheinander. Zur Ansteuerung des RGB-Moduls wird die freie Library Adafruit_NeoPixel verwendet.

#include <Adafruit_NeoPixel.h>

#define LED_PIN    9  // or any other PWM capable pin
#define BRIGHTNESS 50 // [1..255]
#define DEMO_DELAY 1000

Adafruit_NeoPixel ledModule = Adafruit_NeoPixel(1, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup()
{
    ledModule.begin();

    // set the LED off
    ledModule.setPixelColor(0, ledModule.Color(0, 0, 0));
    ledModule.show();
}

void loop()
{
    ledModule.setPixelColor(0, ledModule.Color(BRIGHTNESS, 0, 0));
    ledModule.show();
    delay(DEMO_DELAY);

    ledModule.setPixelColor(0, ledModule.Color(0, BRIGHTNESS, 0));
    ledModule.show();
    delay(DEMO_DELAY);

    ledModule.setPixelColor(0, ledModule.Color(0, 0, BRIGHTNESS));
    ledModule.show();
    delay(DEMO_DELAY);
}

Serielle Schaltung des WS2812B

Schaltbild für typische serielle Schaltung mehrerer WS2812B-Module
Abb.: Schaltbild für typische serielle Schaltung mehrerer WS2812B-Module