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 19.02.24).
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:
oder: Sketch -> Bibliothek einbinden -> Bibliotheken verwalten
Jedem Befehl muss der Name des LED-Sticks vorangestellt werden.
Direkt weiter zur ➨ Programmierung
Funktionen der Bibliothek Adafruit_NeoPixel (Auswahl)
Schlüsselwort | Aktion |
---|---|
begin() | LED-Ring starten |
numPixels() | Anzahl der LEDs lesen |
show() | LED-Ring einschalten |
clear() | LED-Ring 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 blau -> 0 - 255 Beispiel rot: int Farbe = LEDStreifen.Color(255, 0, 0); Beispiel grün: int Farbe = LEDStreifen.Color(0, 255, 0); Beispiel blau: int Farbe = LEDStreifen.Color(0, 0, 255); |
fill(Farbe, Start, Ende) | Farbe für die mit Start und Ende bezeichneten Pixel setzen |
Das Beispiel nutzt einige Funktionen 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 am LED-Stick
// 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 Anleitungen:
- 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 UNO R4 WiFi schalten
- Ampelanlage an einem Fußgängerüberweg
- Ampel mit Ultraschallsensor schalten
- MQTT mit ESP32
- Zwei Ampeln
Letzte Aktualisierung: