
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 1×4
- 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:
// 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:
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.
/*
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:
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
// die Farben
int rot = 0;
int gruen = 0;
int blau = 0;
Aktiviere im setup-Teil den Vorwiderstand für die Taster:
void setup()
{
pinMode (LEDblau, OUTPUT);
pinMode(LEDgruen, OUTPUT);
pinMode(LEDrot, OUTPUT);
// INPUT_PULLUP -> Eingangspegel auf HIGH setzen
pinMode(TASTER_ROT, INPUT_PULLUP);
pinMode(TASTER_GRUEN, INPUT_PULLUP);
pinMode(TASTER_BLAU, INPUT_PULLUP);
}
Der loop-Teil fragt jeden Taster ab.
Zum Schluss musst du noch die LEDs mit dem durch das Betätigen der Taste eingestellten Wert zum Leuchten bringen.
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;
}
analogWrite(LEDrot, rot);
analogWrite(LEDgruen, gruen);
analogWrite(LEDblau, blau);
delay(20);
}
Verwandte Anleitungen:
- Farbenspiele mit einem LED-Streifen
- Jukebox mit Klingeltönen
- Länder-Info
- LEDs mit einem Tastenpad schalten
- Multiplikations-Taschenrechner
- Pin-Eingabe
- Pin-Eingabe mit LCD und Servomotor
- Spieluhr mit dem Tastenpad
- Töne erzeugen mit dem Tastenfeld
Letzte Aktualisierung: