Arduino RGB-LED-Strip mit WS2812 LEDs ansteuern

RGB-LED-Strips mit WS2812 LEDs sind bei vielen Bastlern sehr beliebt, da die LEDs einen integrierten LED-Controller besitzen und relativ einfach angesteuert werden können.

Die LEDs WS2812 können entweder einzeln, auf einer Trägerplatinen oder als Strip gekauft werden. Einzelne LEDs lassen sich nur relativ schwer verwenden und sind für Einsteiger nicht empfehlenswert. Jedoch gibt es die Strips relativ günstig und sie können nach jeder LED getrennt werden.

Für die Ansteuerung wird von Adafruit eine Bibliothek mit dem Namen Adafruit_Neopixel bereitgestellt. Der Name kommt von den ebenfalls von Adafruit angebotenen WS2812 LEDs auf einer Trägerplatine oder in vielen anderen Bauweisen, die alle den Namen Neopixel besitzen.

Bevor mit der Programmierung begonnen werden kann, muss zunächst die Adafruit_Neopixel Bibliothek heruntergeladen und entpackt werden. Anschließend muss der entpackte Ordner mit dem Namen Adafruit_NeoPixel-master in Adafruit_NeoPixel umbenannte und in den Sketch Order kopiert werden. Unter Linux sollte dies Standardmäßig der Ordner Arduino/libraries im Home-Verzeichnis sein. Weitere Informationen wo sich der entsprechende Ordner befindet, kann der Anleitung zu Bibliothek auf der Arduino Webseite entnommen werden. Das folgende Beispiel zeigt die Installation auf einem Linux System aussehen könnte.

$ wget https://github.com/adafruit/Adafruit_NeoPixel/archive/master.zip
$ unzip master.zip
$ mv Adafruit_NeoPixel-master ~/Arduino/libraries/Adafruit_NeoPixel

Ist die Bibliothek installiert, kann sie über die Arduino IDE verwendet werden. Falls die IDE während der Installation lief, sollte sie neu gestartet werden.

Das folgende Beispiel zeigt in wenigen Schritten die grundlegende Verwendung der Bibliothek. Zunächst wird die benötigte Header-Datei eingebunden und der zu verwendende Port definiert. Anschließend wir der Strip mit 30 LEDs, dem vorher definierten Pin, dem Grün-Rot-Blau (GRB) Modus und der schnellen 800kHz Übertragungsrate initialisiert. In der setup() Funktion wird der LED-Strip initialisiert und mit der show() Funktion werden alle Pixel ausgeschaltet. Danach werden in der loop() Funktion alle Pixel rot eingefärbt und zum Schluss werden die gesetzten Farben mit der show() Funktion an den LED-Strip übertragen.

#include <Adafruit_NeoPixel.h>

#define PIN 0

Adafruit_NeoPixel strip = Adafruit_NeoPixel(30, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.show();
}

void loop() {
  uint32_t c;
  c = strip.Color(255, 0, 0);
  for(uint16_t i=0; i < strip.numPixels(); i++) {
     strip.setPixelColor(i, c);
  }
  strip.show();
}

Weitere ausführlichere Beispiele liegen der Bibliothek bei.

Angeschlossen wird der LED-Strip mit drei Kontakten.

Strip Arduino
+5V 5V
GND GND
DI D0

Hinweis: Unbedingt darauf achten, dass der Arduino nicht überlastet wird. Laut Datenblatt benötigt jede LED pro Farbe ca. 20mA.

Verwandte Artikel