


Der LED-Stick besteht aus mehreren miteinander verbundenen RGB-LEDs. Jede besitzt einen eigenen Controller und kann einzeln angesteuert werden. Der LED-Stick benötigt nur einen digitalen Eingang.
RGB ist eine Mischung der Farben Rot, Grün und Blau. Jede Farbe kann von 0 bis 255 gesetzt werden, die Werte werden durch Kommata getrennt.

Hier findest du einen Überblick über die 🔗 RGB-Farbcodes (externer Link abgerufen am 25.4.22).
Die Ampel soll nach einem festgelegten Takt geschaltet werden:
rot | rot-gelb | grün | gelb |
---|---|---|---|
![]() | ![]() | ![]() | ![]() |
5 Sekunden | 1 Sekunde | 3 Sekunden | 1 Sekunde |
LEDs 8, 7, 6 | LEDs 8, 7, 6, 5, 4 | LEDs 3, 2, 1 | LEDs 5, 4 |
Benötigte Bauteile:
- LED-Stick
- Leitungsdrähte
Baue die Schaltung auf.
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)

Achte auf die Polung. Sie kann bei den LED-Sticks verschiedener Hersteller unterschiedlich sein.
Benötigte Bibliothek:
Arduino 1.8x:
Sketch → Bibliothek einbinden → Bibliotheken verwalten

Arduino IDE 2.x:


Jedem Befehl muss der Name des LED-Sticks vorangestellt werden.
Direkt weiter zur ➨ Programmierung
Methoden der Bibliothek Adafruit_NeoPixel (Auswahl)
Methode | Funktion |
---|---|
begin() | LED-Streifen starten |
numPixels() | Anzahl der LEDs lesen |
show() | LED-Streifen einschalten |
clear() | LED-Streifen ausschalten |
setPixelColor(LED-Nummer, rot, grün, blau) | Farbe einer LED setzen LED-Nummer rot -> 0 - 255 grün -> 0 - 255 blau -> 0 - 255 |
setBrightness() | Helligkeit setzen (0−255) |
Color(rot, grün, blau) | Farbe für alle LEDs setzen rot -> 0 - 255 grün -> 0 - 255 oder: Wert „für gepacktes RGB“ ermitteln long Farbe = LEDStreifen.Color(0, 0, 255); blau -> 0 - 255 |
fill(gepacktes_RGB, Start, Ende) | Farbe für die mit Start und Ende bezeichneten Pixel setzen Berechnung für "gepacktes RGB" Farbe = 65536 * Rot + 256 * Grün + Blau |
Das Beispiel nutzt einige Methoden der Bibliothek:
Das dazugehörige Programm. Beachte die Kommentare.
# include <Adafruit_NeoPixel.h>
// digitaler Pin des LED-Sticks
int PinLEDStick = 7;
// Anzahl der LEDs
# define AnzahlLED 8
/*
Initialisierung des LED-Sticks
Parameter:
LEDStick -> Name des LED-Sticks
AnzahlLED -> Anzahl der LEDs
PinLEDStick -> verwendeter Pin
NEO_GRB + NEO_KHZ800 -> Typ des verwendeten LED-Sticks
*/
Adafruit_NeoPixel LEDStick = Adafruit_NeoPixel(AnzahlLED, PinLEDStick, NEO_GRB + NEO_KHZ800);
void setup()
{
// NeoPixel Bibliothek initialisieren
LEDStick.begin();
// setBrightness(0..255)
LEDStick.setBrightness(200);
}
void loop()
{
// Farbe rot schrittweise von 0 bis 255 aufhellen
for (int i = 0; i < 255; i++)
{
// alle LEDs mit der Leuchtstärke i zum Leuchten bringen
for (int LEDNummer = 0; LEDNummer < LEDStick.numPixels(); LEDNummer++)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(i, 0, 0));
LEDStick.show();
}
}
// LEDs von der maximalen Leuchtstärke 255 auf 0 abdunkeln
for (int i = 255; i > 0; i--)
{
for (int LEDNummer = 0; LEDNummer < LEDStick.numPixels(); LEDNummer++)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(i, 0, 0));
LEDStick.show();
}
}
// LED aus, kurze Pause
LEDStick.clear();
delay(1000);
// Farbe grün schrittweise von 0 bis 255 aufhellen
for (int i = 0; i < 255; i++)
{
for (int LEDNummer = 0; LEDNummer < LEDStick.numPixels(); LEDNummer++)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, i, 0));
LEDStick.show();
}
}
// LEDs von der maximalen Leuchtstärke 255 auf 0 abdunkeln
for (int i = 255; i > 0; i--)
{
for (int LEDNummer = 0; LEDNummer < LEDStick.numPixels(); LEDNummer++)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, i, 0));
LEDStick.show();
}
}
// LED aus, kurze Pause
LEDStick.clear();
delay(1000);
// Farbe blau schrittweise von 0 bis 255 aufhellen
for (int i = 0; i < 255; i++)
{
for (int LEDNummer = 0; LEDNummer < LEDStick.numPixels(); LEDNummer++)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 0, i));
LEDStick.show();
}
}
// LEDs von der maximalen Leuchtstärke 255 auf 0 abdunkeln
for (int i = 255; i > 0; i--)
{
for (int LEDNummer = 0; LEDNummer < LEDStick.numPixels(); LEDNummer++)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 0, i));
LEDStick.show();
}
}
// LED aus, kurze Pause
LEDStick.clear();
delay(1000);
// vorwärts mit rot
for (int LEDNummer = 0; LEDNummer < LEDStick.numPixels(); LEDNummer++)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(255, 0, 0));
LEDStick.show();
delay(100);
}
// rückwärts mit grün
for (int LEDNummer = LEDStick.numPixels(); LEDNummer >= 0 ; LEDNummer--)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 255, 0));
LEDStick.show();
delay(100);
}
// LED aus, kurze Pause
LEDStick.clear();
delay(1000);
// vorwärts mit blau
for (int LEDNummer = 0; LEDNummer < LEDStick.numPixels(); LEDNummer++)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 0, 255));
LEDStick.show();
delay(100);
}
// rückwärts mit gelb
for (int LEDNummer = LEDStick.numPixels(); LEDNummer >= 0 ; LEDNummer--)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(255, 255, 0));
LEDStick.show();
delay(100);
}
// LED aus, kurze Pause
LEDStick.clear();
delay(1000);
}
Die Programmierung der Ampel:
Der zeitliche Ablauf:

Binde die benötigte Bibliothek ein und definiere die Variablen.
include <Adafruit_NeoPixel.h>
int PinLEDStick = 7;
int AnzahlLED = 8;
/*
Initialisierung des LED-Sticks
Parameter:
LEDStick -> Name des LED-Sticks
AnzahlLED -> Anzahl der LEDs
PinLEDStick -> verwendeter Pin
NEO_GRB + NEO_KHZ800 -> Typ des verwendeten LED-Sticks
*/
Adafruit_NeoPixel LEDStick = Adafruit_NeoPixel(AnzahlLED, PinLEDStick, NEO_GRB + NEO_KHZ800);
Der setup-Teil:
void setup()
{
// NeoPixel Bibliothek initialisieren
LEDStick.begin();
// setBrightness(0..255)
LEDStick.setBrightness(200);
}
Der loop-Teil. Beachte die Kommentare.
void loop()
{
// Zählung beginnt oben
// rot ein
for (int LEDNummer = AnzahlLED; LEDNummer > 4; LEDNummer--)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(255, 0, 0));
LEDStick.show();
}
delay(3000);
// gelb an
for (int LEDNummer = 4; LEDNummer > 2; LEDNummer--)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(255, 255, 0));
LEDStick.show();
}
delay(1000);
// rot aus
for (int LEDNummer = AnzahlLED; LEDNummer > 4; LEDNummer--)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 0, 0));
LEDStick.show();
}
// gelb aus
for (int LEDNummer = 4; LEDNummer > 2; LEDNummer--)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 0, 0));
LEDStick.show();
}
// grün an
for (int LEDNummer = 2; LEDNummer >= 0; LEDNummer--)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 255, 0));
LEDStick.show();
}
delay(3000);
// grün aus
for (int LEDNummer = 2; LEDNummer >= 0; LEDNummer--)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 0, 0));
LEDStick.show();
}
// gelb an
for (int LEDNummer = 4; LEDNummer > 2; LEDNummer--)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(255, 255, 0));
LEDStick.show();
}
delay(1000);
// gelb aus
for (int LEDNummer = 4; LEDNummer > 2; LEDNummer--)
{
LEDStick.setPixelColor(LEDNummer, LEDStick.Color(0, 0, 0));
LEDStick.show();
}
}
Verwandte Aufgaben:
- Ampel
- Ampel mit dem Beschleunigungssensor ADXL335 schalten
- Ampel mit Bluetooth schalten
- Ampel mit einem Ethernet-Shield schalten
- Ampel mit Fußgängerampel
- Ampel mit Fußgängerampel und Taster
- Ampel mit Ultraschallsensor schalten
- Zwei Ampeln
Letzte Aktualisierung: