AEQ-WEB

Arduino WS2811 WS2812 LED Strip Color Control
Arduino
18.10.2018

Arduino LED-Strip Farbsteuerung

Für dieses Projekt gibt es auch ein Video auf Youtube: RGB LED Strip Tutorial - Farben mit dem Arduino steuern - WS2811 WS2812 Neopixel


WS2811 & WS2812 RGB LED Strip

In diesem Beitrag zeigen wir, wie man mit dem Arduino Board einen RGB-LED-Strip ansteuern kann. Der LED-Strip hat für jede einzelne LED oder auch eine kleine Gruppe von LEDs einen eignen Controller. Dieser Controller wird über das Arduino Board angesteuert und dadurch ist es möglich, jede einzelne LED oder LED-Gruppe individuell zu schalten. Jede LED kann eine bestimmte Farbe und Leuchtstärke haben. Weiters können mit den drei Grundfarben und der entsprechenden Helligkeit nahezu alle Farben vom Farbspektrum dargestellt werden.


Die Hardware

Es gibt LED-Strips und Lichterketten, die einen WS2811, WS2812, WS2811B oder WS2812B Chip enthalten. Die oben genannten Chips werden alle gleich angesteuert und sind daher mit derselben Library kompatibel. Das „B“ am Ende der Bezeichnung vom Chip bedeute, dass der IC in der LED integriert ist. Außerdem gibt es diese Strips oder Lichterketten mit verschiedenen Spannungen. Hauptsächlich gibt es 12 Volt und 5 Volt varianten. In unserem Beispiel haben wir die 12 Volt Version verwendet, da bei 12 Volt der Strom viel kleiner ist und wir sehr viele Netzteile haben, die uns 12 Volt liefern können. Es gibt auch noch andere Chips, wie beispielsweiße den WS2801, P9823 oder auch den SK6812. Teilweise sind auch diese Controller mit der Library kompatibel. Der LED-Strip kann direkt mit dem Arduino verbunden werden. Obwohl es viele Schaltpläne gibt, wo sich auf der Datenleitung zwischen den Arduino Board und dem LED-Strip ein Widerstand befindet, ist das nicht unbedingt notwendig. Bei einer guten Energieversorgung ist auch kein Kondensator zwischen Plus und Minus notwendig. In unserem Beispiel wird die Datenleitung beim Arduino an den I/O Pin D6 angeschlossen. Wichtig ist auch, dass das Arduino Board und der LED-Strip dieselbe Masse haben.


WS2811 WS2812 Arduino RGB LED Wiring Plan

Die Software

Die Software ist mit der Neopixel Library von Adafruit sehr klein und einfach. Die Library übernimmt im Hintergrund sehr viele aufwendige und zeitkritische Abläufe, die für einen Anfänger nicht schaffbar sind zu entwickeln. Deshalb verwenden auch wir die einfache Neopixel Library. Wenn die Library installiert wurde, kann ein neues Projekt erstellt werden und der folgende Code einfach hineinkopiert werden.


Arduino Code
#include <Adafruit_NeoPixel.h>

#define PIN            6
#define NUMPIXELS      100

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  pixels.begin();
}

void loop() {
  pixels.setPixelColor(0, pixels.Color(0, 0, 100));
  pixels.setPixelColor(1, pixels.Color(0, 100, 0));
  pixels.setPixelColor(2, pixels.Color(100, 0, 0));
  pixels.show();
}

Der Code im Detail

In der ersten Zeile wird die Library eingebunden. In der nächsten Zeile wird der Pin definiert, an dem die Datenleitung angeschlossen ist. Zusätzlich wird in der darauffolgenden Zeile die Anzahl der einzelnen LED Controller definiert. Wenn ein Strip 300 LEDs hat, die einzeln steuerbar sind, wird hier auch der Wert 300 definiert. Hat der Strip 300 LEDs, wovon immer 3 LEDs auf einen IC hängen, so wird der Wert 100 eingegeben.


pixels.begin();

Mit diesem Befehl wird der LED-Strip aktiviert

pixels.setPixelColor(0, pixels.Color(100, 0, 0));

Dieser Befehl steuert eine einzige Gruppe oder LED am Strip. Nach "setPixelColor" wird die Nummer definiert, die angesteuert werden soll. Anschließend wird in "pixels.Color(100,0,0)" die Helligkeit der einzelnen Farben definiert. Der Wert geht von 0-255, wovon 255 die hellste Stufe ist und bei null die Farbe komplett aus beliebt. Mit den drei werten wird der Farbanteil (Grün, Blau & Rot) gemischt.

pixels.show();
Erst wenn der obere Befehl ausgeführt wird, wird die Änderung zeitgleich an alle LEDs vom gesamten LED-Strip gesendet.