
Die Tasten eines Tastenfeldes sollen dazu dienen, die Farben rot, grün und blau einer RGB-LED mit der ⇒Pulsweitenmodulation zu schalten.
So sieht es aus:


Eine RGB-LED besitzt 3 kleine LEDs in den Grundfarben rot, grün und blau. Der längere Pin ist entweder — (Common Cathode) oder + (Common Anode). Die abgebildete LED wird an GND (-) angeschlossen, die Version mit Common Anode wird an den 5 Volt Anschluss gesteckt.Die verwendete Version kannst du durch einfaches Umstecken (GND/5V) herausfinden.
Die Helligkeit wird mit entsprechend der gemessenen Spannung geregelt: 0 (0 Volt) ⇒ aus. 255 ⇒ an (5 Volt).
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. Dies funktioniert mit der ⇒Pulsweitenmodulation
Benötigte Bauteile:
- RGB-LED
- 3 Widerstände 220 Ω
- Tastenfeld 1x4 oder 4 Taster
- Leitungsdrähte

Baue die Schaltung auf.
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Du kannst die Schaltung auch mit ⇒Tastern aufbauen.

Ob du die Schaltung der RGB-LED richtig aufgebaut hast, kannst du mit diesem Programm testen:
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 | // Farbe rot an Pin 11 int LEDrot = 11; // Farbe grün an Pin 10 int LEDgruen = 10; // Farbe blau an Pin 9 int LEDblau = 9; void setup() { pinMode(LEDrot, OUTPUT); pinMode(LEDgruen, OUTPUT); pinMode(LEDblau, OUTPUT); } void loop() { analogWrite(LEDrot, 255); delay(1000); analogWrite(LEDrot, 0); analogWrite(LEDgruen, 255); delay(1000); analogWrite(LEDgruen, 0); analogWrite(LEDblau, 255); delay(1000); analogWrite(LEDblau, 0); } |
Farben mit PWM 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 55 56 | int LEDblau = 9; int LEDgruen = 10; int LEDrot = 11; void setup() { pinMode (LEDblau, OUTPUT); pinMode(LEDgruen, OUTPUT); pinMode(LEDrot, OUTPUT); } void loop() { // rot heller for (int i = 0; i < 250; i += 10) { analogWrite(LEDrot, i); delay(200); } // rot dunkler for (int i = 250; i > 0; i -= 10) { analogWrite(LEDrot, i); delay(200); } // grün heller for (int i = 0; i < 250; i += 10) { analogWrite(LEDgruen, i); delay(200); } // grün dunkler for (int i = 250; i > 0; i -= 10) { analogWrite(LEDgruen, i); delay(200); } // blau heller for (int i = 0; i < 250; i += 10) { analogWrite(LEDblau, i); delay(200); } // blau dunkler for (int i = 250; i > 0; i -= 10) { analogWrite(LEDblau, i); delay(200); } } |

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 45 46 | /* 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); // 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)); } } |
Jeder Tastendruck soll eine Farbe schrittweise heller machen.
Setze die Variablen:
1 2 3 4 5 6 7 8 9 10 11 12 13 | int LEDblau = 9; int LEDgruen = 10; int LEDrot = 11; int TASTER_ROT = 5; // Taste 1 int TASTER_GRUEN = 4; // Taste 2 int TASTER_BLAU = 7; // Taste 3 int TASTER_AUS = 6; // Taste 3 // die Farben int rot = 0; int gruen = 0; int blau = 0; |
Der setup-Teil.
1 2 3 4 5 6 7 8 9 10 11 12 13 | void setup() { pinMode (LEDblau, OUTPUT); pinMode(LEDgruen, OUTPUT); pinMode(LEDrot, OUTPUT); pinMode(TASTER_AUS, INPUT_PULLUP); // INPUT_PULLUP -> Eingangspegel auf HIGH setzen pinMode(TASTER_ROT, INPUT_PULLUP); pinMode(TASTER_GRUEN, INPUT_PULLUP); pinMode(TASTER_BLAU, INPUT_PULLUP); pinMode(TASTER_AUS, INPUT_PULLUP); } |
Der loop-Teil fragt jeden Taster ab.
Zum Schluss musst du noch mit analogWrite die LEDs mit dem durch das Betätigen der Taste eingestellten Wert zum Leuchten bringen.
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 | void loop() { if (digitalRead(TASTER_ROT) == LOW) { rot ++; // Wert darf 255 nicht übersteigen -> auf 0 setzen if (rot > 255) rot = 0; } if (digitalRead(TASTER_GRUEN) == LOW) { gruen ++; // Wert darf 255 nicht übersteigen-> auf 0 setzen if (gruen > 255) gruen = 0; } if (digitalRead(TASTER_BLAU) == LOW) { blau ++; // Wert darf 255 nicht übersteigen -> auf 0 setzen if (blau > 255) blau = 0; } if (digitalRead(TASTER_AUS) == LOW) { rot = 0; gruen = 0; blau = 0; } analogWrite(LEDrot, rot); analogWrite(LEDgruen, gruen); analogWrite(LEDblau, blau); delay(20); } |
Verwandte Anleitungen:
Letzte Aktualisierung:






