
Ziel des Projekts
Mit den Tasten einer Fernbedienung soll eine LED ein- und wieder ausgeschaltet werden.
Benötigte Bauteile
- LED
- ⇒Infrarot-Modul
- Fernbedienung
- Widerstand > 100 Ω
- Leitungsdrähte
Der Schaltplan
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Benötigte Bibliothek

Das Programm
Die Fernbedienung sendet beim Druck auf die Tasten einen Zahlencode.
Die Tastencodes beziehen sich auf die Keyes-Fernbedienung.

| Ein/aus | Menu | Test | + | ↺ | | ◄ ◄ | ► | ►►| | 0 | - |
| 0x45 69 | 0x47 71 | 0x44 68 | 0x40 64 | 0x40 64 | 0x7 7 | 0x15 21 | 0x9 9 | 0x16 22 | 0x19 25 |
| C | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 0xD 13 | 0xC 12 | 0x18 24 | 0x5E 94 | 0x8 8 | 0x1C 28 | 0x5A 90 | 0x42 66 | 0x52 82 | 0x4A 74 |
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 |
// 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 und der LED.
Im setup-Teil wird die LED als OUTPUT definiert und die Infrarot-Empfänger initialisiert.
|
1 2 3 4 5 6 7 8 9 10 |
#include "IRremote.hpp" int EmpfaengerPin = 11; int LED = 7; void setup() { Serial.begin(9600); // Empfänger starten IrReceiver.begin(EmpfaengerPin); } |
Im loop-Teil musst du die Tasten 1 und 2 mit if abfragen.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
void loop() { // Daten lesen if (IrReceiver.decode()) { // nächsten Wert lesen IrReceiver.resume(); if (IrReceiver.decodedIRData.address == 0) { // Taste 1 -> gelesener Deizimalwert 22 -> LED einschalten if (IrReceiver.decodedIRData.command == 22) digitalWrite(LED, HIGH); // Taste 2 -> gelesener Deizimalwert 25 -> LED ausschalten if (IrReceiver.decodedIRData.command == 25) digitalWrite(LED, LOW); } } } |
Ähnliche Projekte
Letzte Aktualisierung:

