
Jeder Taste des Tastenpads ist eine farbige LED zugeordnet. Wird die entsprechende Taste gedrückt, leuchtet die LED. Ein erneuter Druck auf die Taste schaltet die LED wieder aus.
So sieht es aus:

Benötigte Bauteile:
- 5 LEDs
- 3 Widerstände 220 Ω (gelbe, rote und grüne LED)
- 2 Widerstände 100 Ω (blaue und weiße LED)
- Tastenpad
- Leitungsdrähte

Beachte die ⇒ Vorwiderstände verschiedener LEDs
Baue die Schaltung auf.
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Die gedrückte Taste wird durch die Messung des analogen Wertes ermittelt. Leider kann dieser Wert nur ungefähr angegeben werden, so dass es beim laufenden Programm gelegentlich zu nicht erwünschten Effekten kommen kann.

Definiere ein ⇒Array für die LEDs und eins für den aktuellen Status der LEDs. Sie sind beim Programmstart ausgeschaltet (false).
Für das Auslesen der Taster sind die Variablen Taster und Analogwert zuständig.
1 2 3 4 5 6 7 8 9 10 | // Array für die LEDs int LED[5] = {3, 4, 5, 6, 7}; /* Array für den Zustand der LEDs false = ausgeschaltet */ bool Status[5] = {false, false, false, false, false}; int Taster; int Analogwert; |
Eine ⇒int-Funktion erledigt das Auslesen des analogen Werts. Eine Besonderheit ist hier das Abfragen des Wertes mit switch mit einem Wertebereich.

Denke daran, dass die Funktion Tasterabfrage außerhalb des setup- und des loop-Teils steht.
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 | int Tasterabfrage() { Analogwert = analogRead(A0); delay(200); Serial.println(Analogwert); /* A0 gibt je nach gedrückten Taster einen Wert aus über den Seriellen Monitor wird dieser Wert angezeigt und kann dann eventuell angepasst werden die Zeile Serial.println … kann dann gelöscht werden Taster 1 ⇒ links Taster 2 ⇒ oben Mitte Taster 3 ⇒ unten Mitte Taster 4 ⇒ rechts Taster 5 ⇒ außen */ switch (Analogwert) { case 0 ... 20: Taster = 1; break; case 30 ... 60: Taster = 2; break; case 70 ... 120: Taster = 3; break; case 150 ... 200: Taster = 4; break; case 300 ... 400: Taster = 5; break; default: return 0; } // gedrückten Taster zurückgeben return Taster; } |
Der setup-Teil weist mit einer ⇒for-Schleife jeder LED des Arrays den Wert OUTPUT zu.
1 2 3 4 5 6 7 8 9 | void setup() { for (int i = 0; i <= 4; i++) { pinMode(LED[i], OUTPUT); } Serial.begin(9600); } |
Der loop-Teil fragt mit Hilfe der Funktion TasterAbfrage den gedrückten Taster ab:
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 | void loop() { Taster = Tasterabfrage(); // Taster links if (Taster == 1) { /* gelbe LED Pin 7, LED[4] Status[4] Status umdrehen, aus true wird false aus false wird true */ Status[4] = !Status[4]; digitalWrite(LED[4], Status[4]); } // Taster oben Mitte if (Taster == 2) { // blaue LED Pin 6, LED[3] Status[3] Status[3] = !Status[3]; digitalWrite(LED[3], Status[3]); } // Taster unten Mitte if (Taster == 3) { // rote LED Pin 5, LED[2] Status[2] Status[2] = !Status[2]; digitalWrite(LED[2], Status[2]); } // Taster rechts if (Taster == 4) { // weiße LED Pin 4, LED[1] Status[1] Status[1] = !Status[1]; digitalWrite(LED[1], Status[1]); } // Taster rechts außen if (Taster == 3) { // grüne LED Pin 3, LED[0] Status[0] Status[0] = !Status[0]; digitalWrite(LED[0], Status[0]); } } |
Verwandte Anleitungen:
Letzte Aktualisierung:







