
Ein LED-Streifen soll nach Betätigung einer Taste verschiedene Farben anzeigen. Die LEDs sollen in unterschiedlichen Reihenfolgen leuchten.

Der LED-Streifen besteht aus mehreren miteinander verbundenen RGB-LEDs. Jede besitzt einen eigenen Controller und kann einzeln angesteuert werden. Er 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 07.12.24).
Beispiele:

Benötigte Bauteile:
- LED-Streifen
- Tastenfeld 1x4
- 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-Streifen verschiedener Hersteller unterschiedlich sein.


Mit einem kleinem Programm kannst du testen, ob das Tastenfeld richtig angeschlossen ist.
Die gedrückte Taste wird im ⇒Seriellen Monitor angezeigt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | /* Anschlüsse am Tastenfeld von links nach rechts GND D4 D5 D6 D7 */ int TASTER_EINS = 5; // Taste 1 int TASTER_ZWEI = 4; // Taste 2 int TASTER_DREI = 7; // Taste 3 int TASTER_VIER = 6; // Taste 4 void setup() { Serial.begin(9600); // auf serielle Verbindung warten while (!Serial) {;} // INPUT_PULLUP -> Eingangspegel auf HIGH setzen pinMode(TASTER_EINS, INPUT_PULLUP); pinMode(TASTER_ZWEI, INPUT_PULLUP); pinMode(TASTER_DREI, INPUT_PULLUP); pinMode(TASTER_VIER, INPUT_PULLUP); } void loop() { if (digitalRead(TASTER_EINS) == LOW) { delay(100); Serial.println(“Taste 1 an Pin ” + String(TASTER_EINS)); } if (digitalRead(TASTER_ZWEI) == LOW) { delay(100); Serial.println(“Taste 2 an Pin ” + String(TASTER_ZWEI)); } if (digitalRead(TASTER_DREI) == LOW) { delay(100); Serial.println(“Taste 3 an Pin ” + String(TASTER_DREI)); } if (digitalRead(TASTER_VIER) == LOW) { delay(100); Serial.println(“Taste 4 an Pin ” + String(TASTER_VIER)); } } |
Das eigentliche Programm:
Als Erstes musst du eine Bibliothek installieren:
Sketch ⇒ Bibliothek einbinden ⇒ Bibliotheken verwalten


Jedem Befehl muss der Name des LED-Streifens vorangestellt werden.
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 |
Probiere die folgenden Beispiele:

Farbwechsel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | #include “Adafruit_NeoPixel.h” #define STREIFEN 8 // Anzahl der LEDs -> muss angepasst werden #define AnzahlLED 15 /* Initialisierung des LED-Streifens Parameter: LED-Streifen -> Name des LED-Streifens AnzahlLED -> Anzahl der LEDs STREIFEN -> verwendeter Pin NEO_GRB + NEO_KHZ800 -> Typ des verwendeten LED-Streifens */ Adafruit_NeoPixel LEDStreifen = Adafruit_NeoPixel(AnzahlLED,STREIFEN, NEO_GRB + NEO_KHZ800); void setup() { // setBrightness(0..255) LEDStreifen.setBrightness(200); // NeoPixel Bibliothek initialisieren LEDStreifen.begin(); } void loop() { LEDStreifen.clear(); LEDStreifen.show(); int Farbe; // rot Farbe = LEDStreifen.Color(255, 0, 0); LEDStreifen.fill(Farbe, 0, AnzahlLED); LEDStreifen.show(); delay(1000); // grün Farbe = LEDStreifen.Color(0, 255, 0); LEDStreifen.fill(Farbe, 0, AnzahlLED); LEDStreifen.show(); delay(1000); // blau Farbe = LEDStreifen.Color(0, 0, 255); LEDStreifen.fill(Farbe, 0, AnzahlLED); LEDStreifen.show(); delay(1000); // gelb Farbe = LEDStreifen.Color(255, 255, 0); LEDStreifen.fill(Farbe, 0, AnzahlLED); LEDStreifen.show(); delay(1000); // pink Farbe = LEDStreifen.Color(255, 20, 147); LEDStreifen.fill(Farbe, 0, AnzahlLED); LEDStreifen.show(); delay(1000); // Pause LEDStreifen.clear(); LEDStreifen.show(); delay(2000); } |
Farbe rot dimmen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include “Adafruit_NeoPixel.h” #define STREIFEN 8 // Anzahl der LEDs -> muss angepasst werden #define AnzahlLED 15 /* Initialisierung des LED-Streifens Parameter: LED-Streifen -> Name des LED-Streifens AnzahlLED -> Anzahl der LEDs STREIFEN -> verwendeter Pin NEO_GRB + NEO_KHZ800 -> Typ des verwendeten LED-Streifens */ Adafruit_NeoPixel LEDStreifen = Adafruit_NeoPixel(AnzahlLED, STREIFEN, NEO_GRB + NEO_KHZ800); void setup() { // NeoPixel Bibliothek initialisieren LEDStreifen.begin(); // Helligkeit setzen (0 … 255) LEDStreifen.setBrightness(200); } void loop() { /* rot dimmen die Variable i erhöht den Anteil von rot von 0 bis 255 LEDNummer -> Nummer der LED 0 bis numPixels() = Anzahl der LEDs im Streifen LEDStreifen.setPixelColor(LEDNummer, LEDStreifen.Color(i, 0, 0)); -> Farbe der LED (LEDNummer) setzen */ for (int i = 0; i < 255; i++) { for (int LEDNummer = 0; LEDNummer < LEDStreifen.numPixels(); LEDNummer++) { LEDStreifen.setPixelColor(LEDNummer, LEDStreifen.Color(i, 0, 0)); LEDStreifen.show(); } } // Anteil der Farbe verrringern, dadurch ensteht der “Dimm-Effekt” for (int i = 255; i > 0; i–) { for (int LEDNummer = 0; LEDNummer < LEDStreifen.numPixels(); LEDNummer++) { LEDStreifen.setPixelColor(LEDNummer, LEDStreifen.Color(i, 0, 0)); LEDStreifen.show(); } } // LED aus LEDStreifen.clear(); LEDStreifen.show(); delay(1000); } |
Lauflicht nach Tasterdruck
Für das Programm wird nur die Taste 1 des Tastenfelds verwendet.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #include “Adafruit_NeoPixel.h” #define STREIFEN 8 // Anzahl der LEDs -> muss angepasst werden #define AnzahlLED 15 // Taste 1 wird verwendet int TASTER = 5; /* Initialisierung des LED-Streifens Parameter: LEDStreifen -> Name des LED-Streifens AnzahlLED -> Anzahl der LEDs STREIFEN -> verwendeter Pin NEO_GRB + NEO_KHZ800 -> Typ des verwendeten LED-Streifens */ Adafruit_NeoPixel LEDStreifen = Adafruit_NeoPixel(AnzahlLED, STREIFEN, NEO_GRB + NEO_KHZ800); void setup() { // NeoPixel Bibliothek initialisieren LEDStreifen.begin(); LEDStreifen.setBrightness(200); pinMode(TASTER, INPUT_PULLUP); } void loop() { int TasterLesen = digitalRead(TASTER); // LEDS leuchten solange der Taster gedrückt wird if (TasterLesen == LOW) { int WarteZeit = 100; for (int ii = 0; ii < 3; ii++) { for (int i = 0; i < LEDStreifen.numPixels(); i += 3) { // jede dritte LED mit blau einschalten LEDStreifen.setPixelColor(i + ii, 0, 0, 255); } LEDStreifen.show(); delay(WarteZeit); for (int i = 0; i < LEDStreifen.numPixels(); i += 3) { // jede dritte LED ausschalten LEDStreifen.setPixelColor(i + ii, 0); } } } else { // alle LEDs ausschalten LEDStreifen.clear(); LEDStreifen.show(); } } |
Das Ein- und Ausschalten jeder dritten LED ergibt eine Art „Jagdeffekt“ der LEDs. Jede Taste des Tastenfeldes soll diesen Effekt bei der jeweiligen Farbe starten.
Binde die benötigte Bibliothek ein und definiere die Variablen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include “Adafruit_NeoPixel.h” #define STREIFEN 8 // Anzahl der LEDs -> muss angepasst werden #define AnzahlLED 15 // die Tasten des Tastenfelds int TASTER_ROT = 5; // Taste 1 int TASTER_GRUEN = 4; // Taste 2 int TASTER_BLAU = 7; // Taste 3 int TASTER_GELB = 6; // Taste 4 // LED-Streifen -> Name des LED-Streifens Adafruit_NeoPixel LEDStreifen = Adafruit_NeoPixel(AnzahlLED, STREIFEN, NEO_GRB + NEO_KHZ800); |
Im setup-Teil wird der LED-Streifen gestartet und die Tasten des Tastenfelds als INPUT_PULLUP definiert.
1 2 3 4 5 6 7 8 9 10 11 12 | void setup() { // NeoPixel Bibliothek initialisieren LEDStreifen.begin(); LEDStreifen.setBrightness(200); // Vorwiderstand der Tasten aktivieren pinMode(TASTER_ROT, INPUT_PULLUP); pinMode(TASTER_GRUEN, INPUT_PULLUP); pinMode(TASTER_BLAU, INPUT_PULLUP); pinMode(TASTER_GELB, INPUT_PULLUP); } |
Im loop-Teil werden die Tasten einzeln abgefragt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | void loop() { // alle LEDs ausschalten LEDStreifen.clear(); LEDStreifen.show(); // Taste 1 if (digitalRead(TASTER_ROT) == LOW) { int WarteZeit = 100; for (int ii = 0; ii < 3; ii++) { for (int i = 0; i < LEDStreifen.numPixels(); i += 3) { // jede dritte LED einschalten LEDStreifen.setPixelColor(i + ii, 200, 0, 0); } LEDStreifen.show(); delay(WarteZeit); for (int i = 0; i < LEDStreifen.numPixels(); i += 3) { // jede dritte LED ausschalten LEDStreifen.setPixelColor(i + ii, 0); } } } // Taste 2 if (digitalRead(TASTER_GRUEN) == LOW) { int WarteZeit = 100; for (int ii = 0; ii < 3; ii++) { for (int i = 0; i < LEDStreifen.numPixels(); i += 3) { // jede dritte LED einschalten LEDStreifen.setPixelColor(i + ii, 0, 255, 0); } LEDStreifen.show(); delay(WarteZeit); for (int i = 0; i < LEDStreifen.numPixels(); i += 3) { // jede dritte LED ausschalten LEDStreifen.setPixelColor(i + ii, 0); } } } // Taste 3 if (digitalRead(TASTER_BLAU) == LOW) { int WarteZeit = 100; for (int ii = 0; ii < 3; ii++) { for (int i = 0; i < LEDStreifen.numPixels(); i += 3) { // jede dritte LED einschalten LEDStreifen.setPixelColor(i + ii, 0, 0, 255); } LEDStreifen.show(); delay(WarteZeit); for (int i = 0; i < LEDStreifen.numPixels(); i += 3) { // jede dritte LED ausschalten LEDStreifen.setPixelColor(i + ii, 0); } } } // Taste 4 if (digitalRead(TASTER_GELB) == LOW) { int WarteZeit = 100; for (int ii = 0; ii < 3; ii++) { for (int i = 0; i < LEDStreifen.numPixels(); i += 3) { // jede dritte LED einschalten // zufällige Farbe LEDStreifen.setPixelColor(i + ii, 255, 255, 0); } LEDStreifen.show(); delay(WarteZeit); for (int i = 0; i < LEDStreifen.numPixels(); i += 3) { // jede dritte LED ausschalten LEDStreifen.setPixelColor(i + ii, 0); } } } } |
Verwandte Anleitungen:
Letzte Aktualisierung:






