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 seriellen 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.
WS2812B | Erklärung |
---|---|
5V (auch: VCC oder VDD) | Stromversorgung mit +3,5V ~ +5,3V |
GND (auch: VSS) | Masseanschluss |
DI bzw. DIN | "Data In": Dateneingangssignal (wird mit dem Mikrocontroller verbunden) |
DO bzw. DOUT | "Data Out": Datenausgangsignal (kann mit DI des nächsten WS2812B verbunden werden) |
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.
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);
}