Suche

WS2812 LED Pixel

Wie bringe ich „LED Pixel“, hier WS2812 LEDs (vergleichbar mit Neopixel LEDs), mit dem Arduino zum leuchten?

Was sind LED Pixel?

LED Pixel sind einzelne Leuchtdioden, die als kleinste Einheit in einer LED-Anzeige oder -Bildschirm verwendet werden. Jeder LED Pixel besteht aus drei kleinen LEDs, die Rot, Grün und Blau leuchten können. Durch die Kombination dieser drei Farben in unterschiedlichen Intensitäten können Millionen von Farben erzeugt werden. LED Pixel sind die Bausteine für großformatige Bildschirme und Anzeigen, die man oft in Werbetafeln, Stadien, Konzerthallen und Fernsehern sieht.

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

Bauformen

  • Durchgehende LED Pixel: Diese LEDs sind einzeln verkabelt und können als flexible Streifen oder Punktlichtquellen verwendet werden. Sie eignen sich für kreative Installationen und flexible Displays.

  • Module: LED Pixel sind oft in Modulen organisiert, die zusammen größere Bildschirme bilden können. Diese Module sind leicht austauschbar und ermöglichen einfache Wartung und Skalierung.

  • Panels: LED Pixel Panels sind größere Einheiten, die mehrere LEDs in einer festen Anordnung enthalten. Diese Panels sind einfach zu montieren und bieten hohe Auflösung und Helligkeit.

  • Streifen: LED Pixel Streifen sind flexible Bänder, auf denen viele LEDs in einer Reihe montiert sind. Diese Streifen können gebogen und geformt werden, um verschiedene Designs und Anwendungen zu ermöglichen.

  • Matrix: Eine LED-Matrix ist eine Anordnung von LEDs in einer rechteckigen Form. Diese Anordnung ermöglicht die Darstellung von Text, Grafiken und Animationen.

  • Punktlichtquellen: Einzelne LED Pixel, die als Punktlichtquellen verwendet werden, können in verschiedenen Designs und Formen angeordnet werden, um künstlerische und dekorative Effekte zu erzielen.

Programmierung

Eine 8×8 Pixel-Matrix soll mit einem Arduino angesteuert werden. Zunächst verzichten wir dabei auf komplexe Farbspielereien und tolle Regenbogeneffekte, um Schritt für Schritt den Code kennen zu lernen. Wir beginnen daher damit, nur einzelne LEDs anzusteuern. Ob man dabei nun wie wir eine Pixelmatrix verwendet oder einen Streifen mit WS2812 LEDs, oder einen Ring aus WS2812 LEDs ist letztlich egal. Der unten genannte Code funktioniert mit allen Variationen.

Der Aufbau ist für die folgenden Aufgaben immer der gleiche. Die Pixel-Matrix (oder Strefen, oder Ring…) wird mit nur drei Kabeln an den Funduino / Arduino Mikrocontroller angeschlossen. Dabei gibt es die 5V (+) Spannungsversorgung, GND (-) und die Datenleitung.

Vorbereitung

Vor dem Programmieren wird für die LED-Pixel noch eine Library benötigt, welche die Programmierung mit der Arduinosoftware wesentlich vereinfacht. Wir verwenden dafür die Library von Adafruit. Diese findet man in der Arduinosoftware im Librarymanager unter dem Suchbegriff „Adafruit Neopixel“.

Im Sketch muss immer zu Beginn angegeben werden, über wie viele LED-Pixel das angeschlossene Pixel-Modul verfügt (in unserem Fall 8×8=64) und an welchem Pin die Datenleitung angeschlossen wird. Dann kann es aber auch wirklich losgehen.

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 9 // Datenleitung an Pin 9

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

void setup() 
{
  strip.begin();
  strip.show(); // Alle Pixel zu Beginn ausschalten
}

void loop() 
{ 
 strip.setPixelColor(22, (strip.Color(255, 0, 0))); // Der Pixel Nr.23 wird mit der Farbe Rot angesteuert (Der erste Pixel hat die Bezeichnung 0 und der letzte der 64 Pixel hat die Bezeichnung 63). Die Farbe des Pixels ist in diesem Fall rot. Die Farbe kann aber einfach geändert werdenm, indem man den Zahlencode hinter "strip.color" verändert. Die drei Zahlen stehen für die Farben "Rot", "Grün" und "Blau". Je nach größe der Zahl, zwischen 0 und 255, leuchtet die entsprechende Farbe heller oder dunkler. Aus der Kombination von zwei oder allen drei Farben können sehr viele unterschiedliche Farben erzeugt werden.
 strip.show(); // Dieser Befehl aktiviert die zuvor genannten LEDS, in diesem Fall nur die Nummer 23.
}

Aufgabe 2 – Zwei einzelne Pixel gleichzeitig in unterschiedlichen Farben leuchten lassen

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 9 // Datenleitung an Pin 9

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

void setup() 
{
  strip.begin();
  strip.show(); // Alle Pixel zu Beginn ausschalten
}

void loop() 
{ 
strip.setPixelColor(10, (strip.Color(0, 255, 0))); // Der Pixel Nr.11 wird mit der Farbe Grün angesteuert.
strip.setPixelColor(20, (strip.Color(0, 0, 255))); // Der Pixel Nr.21 wird mit der Farbe Blau angesteuert.
strip.show(); // Dieser Befehl aktiviert die zuvor genannten LEDS, in diesem Fall nur die Nummern 11 und 21.
}

Aufgabe 3 – Drei einzelne Pixel in unterschiedlichen Farben nacheinander leuchten lassen

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 9 // Datenleitung an Pin 9

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

void setup() 
{
  strip.begin();
  strip.show(); // Alle Pixel zu Beginn ausschalten
}

void loop() 
{ 
// Pixel 11 aktivieren und deaktivieren
strip.setPixelColor(10, (strip.Color(0, 255, 0))); // Der Pixel Nr.11 wird mit der Farbe Grün angesteuert.
strip.show(); // Die LED Nr.11 wird aktiviert.
delay (1000); // Die LED Nr.12 bleibt 1000ms (1 Sekunde) an.
strip.setPixelColor(10, (strip.Color(0, 0, 0))); // Der Pixel Nr.11 wird mit keiner Farbe angesteuert - Farbe (0,0,0).
strip.show(); // Die LED Nr.11 wird entsprechend des vorherigen Befehls deaktiviert.

// Pixel 12 aktivieren und deaktivieren
strip.setPixelColor(11, (strip.Color(0, 0, 255))); // Der Pixel Nr.12 wird mit der Farbe Blau angesteuert.
strip.show(); // Die LED Nr.12 wird aktiviert.
delay (1000); // Die LED Nr.12 bleibt 1000ms (1 Sekunde) an.
strip.setPixelColor(11, (strip.Color(0, 0, 0))); // Der Pixel Nr.12 wird mit keiner Farbe angesteuert - Farbe (0,0,0).
strip.show(); // Die LED Nr.12 wird entsprechend des vorherigen Befehls deaktiviert.

// Pixel 13 aktivieren und deaktivieren
strip.setPixelColor(12, (strip.Color(255, 0, 0))); // Der Pixel Nr.13 wird mit der Farbe Rot angesteuert.
strip.show(); // Die LED Nr.13 wird aktiviert.
delay (1000); // Die LED Nr.13 bleibt 1000ms (1 Sekunde) an.
strip.setPixelColor(12, (strip.Color(0, 0, 0))); // Der Pixel Nr.13 wird mit keiner Farbe angesteuert - Farbe (0,0,0).
strip.show(); // Die LED Nr.13 wird entsprechend des vorherigen Befehls deaktiviert.
}

Zusätzliche Infos hier:

boxtec.ch Erklärung

boxtech.ch Erklärung – Verweisreferenzen

Adafruit Erklärung

Bei uns im Shop sind die WS2812  auch zu finden

Alle Modelle der hier gezeigten Modelle sind hier zum Download  in einer kompakten Zip Datei verfügbar.