
Das Programm soll zu jeder Zahlentaste der Fernbedienung die dazugehörige Einmaleinsreihe im Seriellen Monitor anzeigen.
So soll es aussehen:

Benötigte Bauteile:
- Infrarotempfänger
- Keyes Fernbedienung
- Leitungsdrähte
Baue die Schaltung auf:
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Achte auf die Pinbelegung der Infrarotempfänger.


Achte darauf, dass die Batterie richtig eingelegt wurde. Der Minus-Pol liegt oben.
Benötigte Bibliothek:
Suche die Bibliothek IRremote ...
… klicke auf Installieren.

oder: Sketch -> Bibliothek einbinden -> Bibliotheken verwalten
Die Fernbedienung sendet beim Druck auf die Tasten einen Zahlencode.
Tastencodes Keyes-Fernbedienung
| Pfeil oben | ||
| 70 (0x46) | ||
| Pfeil links | Taste OK | Pfeil rechts |
| 68 (0x44) | 64 (0x40) | 67 (0x43) |
| Pfeil unten | ||
| 21 (0x15) | ||
| Taste 1 | Taste 2 | Taste 3 |
| 22 (0x16) | 25 (0x19) | 13 (0xD) |
| Taste 4 | Taste 5 | Taste 6 |
| 12 (0xC) | 24 (0x18) | 94 (0x5E) |
| Taste 7 | Taste 8 | Taste 9 |
| 8 (0xB) | 28 (0x1C) | 90 (0x5A) |
| Taste * | Taste 0 | Taste # |
| 66 (0x42) | 82 (0x52) | 74 (0x4A) |

⇒Tastencodes OpenSmart Fernbedienung

⇒Testprogramm beliebige Fernbedienung
Die Tastencodes kannst du mit folgendem Programm herausfinden. Sie werden 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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | // benötigte Bibliothek einbinden #include "IRremote.hpp" // der Pin, an dem der Infrarot-Empfänger angeschlossen ist int EmpfaengerPin = 11; void setup() { // Seriellen Monitor starten Serial.begin(9600); // Infrarot-Empfänger starten IrReceiver.begin(EmpfaengerPin); } void loop() { // decode() -> Daten lesen if (IrReceiver.decode()) { // kurzes delay, damit nur ein Tastendruck gelesen wird delay(200); // resume -> nächsten Wert lesen IrReceiver.resume(); /* der Empfänger empfängt zwischendurch Signale, die nicht ausgewertet werden können es sollen dehalb nur die korrekt erkannten Tasten ausgewertet werden die Dezimalwerte der korrekten erkannten Tasten liegen zwischen > 0 und < 95 es wird abgefragt, ob das empfangene Kommando decodedIRData.command zwischen 0 und (&&) 95 liegt */ if (IrReceiver.decodedIRData.command > 0 && IrReceiver.decodedIRData.command < 95) { Serial.print("Dezimalwert: "); // IrReceiver.decodedIRData.command = Wert der gedrückten Taste Serial.print(IrReceiver.decodedIRData.command); Serial.print(" -> "); // Werte abfragen und anzeigen if (IrReceiver.decodedIRData.command == 22) Serial.println("Taste 1"); if (IrReceiver.decodedIRData.command == 25) Serial.println("Taste 2"); if (IrReceiver.decodedIRData.command == 13) Serial.println("Taste 3"); if (IrReceiver.decodedIRData.command == 12) Serial.println("Taste 4"); if (IrReceiver.decodedIRData.command == 24) Serial.println("Taste 5"); if (IrReceiver.decodedIRData.command == 94) Serial.println("Taste 6"); if (IrReceiver.decodedIRData.command == 8) Serial.println("Taste 7"); if (IrReceiver.decodedIRData.command == 28) Serial.println("Taste 8"); if (IrReceiver.decodedIRData.command == 90) Serial.println("Taste 9"); if (IrReceiver.decodedIRData.command == 82) Serial.println("Taste 0"); if (IrReceiver.decodedIRData.command == 66) Serial.println("Taste *"); if (IrReceiver.decodedIRData.command == 74) Serial.println("Taste #"); if (IrReceiver.decodedIRData.command == 68) Serial.println("Pfeil links"); if (IrReceiver.decodedIRData.command == 67) Serial.println("Pfeil rechts"); if (IrReceiver.decodedIRData.command == 70) Serial.println("Pfeil oben"); if (IrReceiver.decodedIRData.command == 21) Serial.println("Pfeil unten"); if (IrReceiver.decodedIRData.command == 64) Serial.println("OK"); } } } |

Binde die benötigte Bibliothek ein und definiere den Pin des Empfängers.
Im setup-Teil wird der Serielle Monitor gestartet und die Fernbedienung initialisiert.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include "IRremote.hpp" int EmpfaengerPin = 11; void setup() { Serial.begin(9600); // auf serielle Verbindung warten while (!Serial); delay(1000); // Empfänger starten IrReceiver.begin(EmpfaengerPin); } |
Definiere eine ⇒Funktion ReiheAnzeigen, der als Variable Zahl übergeben wird:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | void ReiheAnzeigen(int Zahl) { Serial.print("Einmaleins der "); Serial.println(Zahl); for (int i = 1; i <= 10; i++) { Serial.print(i); Serial.print(" * "); Serial.print(Zahl); Serial.print(" = "); Serial.print(i * Zahl); Serial.println(); } Serial.println("-----------------------"); } |
Im loop-Teil musst du jede Taste mit ⇒switch ... case abfragen und die Funktion ReiheAnzeigen aufrufen:
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 | void loop() { // Daten lesen if (IrReceiver.decode()) { // kurzes delay, damit nur eine Taste gelesen wird delay(200); // nächsten Wert lesen IrReceiver.resume(); /* der Empfänger empfängt zwischendurch Signale, die nicht ausgewertet werden können es sollen dehalb nur die korrekt erkannten Tasten ausgewertet werden die Dezimalwerte der korrekten erkannten Tasten liegen zwischen > 0 und < 95 es wird abgefragt, ob das empfangene Kommando decodedIRData.command zwischen 0 und (&&) 95 liegt */ if (IrReceiver.decodedIRData.command > 0 && IrReceiver.decodedIRData.command < 95) { // je nach Wert Zahl an die Funktion ReiheAnzeigen() übergeben switch (IrReceiver.decodedIRData.command) { // Taste 1 case 22: ReiheAnzeigen(1); break; // Taste 2 case 25: ReiheAnzeigen(2); break; // Taste 3 case 13: ReiheAnzeigen(3); break; // Taste 4 case 12: ReiheAnzeigen(4); break; // Taste 5 case 24: ReiheAnzeigen(5); break; // Taste 6 case 94: ReiheAnzeigen(6); break; // Taste 7 case 8: ReiheAnzeigen(7); break; // Taste 8 case 28: ReiheAnzeigen(8); break; // Taste 9 case 90: ReiheAnzeigen(9); break; default: break; } } } } |
Verwandte Anleitungen:
Letzte Aktualisierung:






