RGB LED mit dem Arduino steuern – NeoPixel Library von Adafruit

DSC00147RGB LED mit dem Arduino

Nichts macht in der Elektronik mehr Spaß als mit Leuchtdioden zu experimentieren.

Von der letzten Makerfaire lagen noch ein paar RGB LED Ringe von Watterott rum. Dazu gesellte sich ein RGB LED-Strip aus China.
Beide haben je RGB-LED einen WS8212 Treiber Chip.
Der WS8212 regelt die Helligkeit der 3 LED#s und damit die Farbe.
Alle Controller mit ihren LED’s hängen hintereinander. Der Ring/Strip funktioniert wie ein großes Schieberegister. Ein Arduino braucht daher nur einen Ausgang je LED-Strip, um diese Armada von LED´s zu steuern.
Diese Strips nicht mit den LED Bändern verwechseln wo man nur Farbe und Helligkeit des gesamten Bandes steuern kann.

Bei mehreren Strip´s könnte ein Arduino Uno Probleme mit seiner Rechenleistung bekommen. Dann ein anderes Board mit höherer Taktung wählen.

Anschluss am Arduino

  • 5 Volt Betriebsspannung und Pegel für den Strip
  • Nur kurze Strips können über den Arduino mit Spannung versorgt werden.
  • Mehrere Strips sind mit einem Arduino steuerbar.
  • Je Strip ein Digitalpin am Arduino für Kommunikation erforderlich.
  • Die Betriebsspannung bei längeren Strips mit 1000 µF Kondensator absichern.
  • >= 300  Ohm Widerstand zwischen Arduino Pin und Strip vorsehen.

Neben Strip´s gibt es auch RGB LED’s die als Ring oder Matrix aufgebaut sind.

Je nach LED Anzahl (12 bis 60 je Ring) liegen die Preise zwischen 4 und 20€.


Am einfachsten lassen sich die WS8212 LED mit der Adafruit NeoPixel Library ansteuern. Hier bei Github herunterladen. Die verschiedenen Prozeduren am besten einzeln ausprobieren.

 


// In den arduino Sketch die Bibliothek einbinden:

  #include <Adafruit_NeoPixel.h

// Die LED-Anzahl, den Arduino Pin und den Chiptyp wählen.

#define PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);

// In der setup-Funktion den Strip initialisieren.

void setup() {
strip.begin();
strip.show(); // Initialize all pixels to 'off'

// Die Helligkeit setzen
strip.setBrightness(64);

}

void loop() { 

// Dies ist die Syntax um einen einzelnen Chip auszuwählen:
strip.setPixelColor(n, red, green, blue);

// n...Die Stelle der LED bei 0 beginnend.

// Die Farbintensität geht von 0 (aus) bis 255 (Maximum). 
// Damit lassen sich alle Farben mischen.

  
//onepoint(strip.Color(255, 0, 0), 10); // Red
//onepointback(strip.Color(255, 255, 255), 10); // White
  
// onepoint(strip.Color(random(255), random(255), random(255)), 200); // Red
//onepointback(strip.Color(random(255), random(255), random(255)), 200); // White
  
//colorWipe(strip.Color(255, 0, 0), 50); // Red
//colorWipe(strip.Color(0, 255, 0), 50); // Green
//colorWipe(strip.Color(0, 0, 255), 50); // Blue
// Send a theater pixel chase in...
//theaterChase(strip.Color(127, 127, 127), 500); // White
//theaterChase(strip.Color(127,   0,   0), 50); // Red
//theaterChase(strip.Color(  0,   0, 127), 50); // Blue

//rainbow(20);
//rainbowCycle(20);
//theaterChaseRainbow(50);
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.