Mit den Tasten einer Fernbedienung soll eine LED ein- und wieder ausgeschaltet werden.
So sieht es aus:
Benötigte Bauteile:
- LED
- Infrarot-Empfänger
- Fernbedienung
- Widerstand > 100 Ω
- Leitungsdrähte
Baue die Schaltung auf:
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Achte auf die Pinbelegung des Infrarotempfängers.
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.
Die Tastencodes beziehen sich auf die Keyes-Fernbedienung und die Open-Smart-Fernbedienung.
Tastencodes Keyes-Fernbedienung (hexadezimal und dezimal)
oben | links | rechts | unten | OK | 1 | 2 | 3 | 4 |
0×46 70 | 0×44 68 | 0×43 67 | 0×15 21 | 0×40 64 | 0×16 22 | 0×19 25 | 0xD 13 | 0xC 12 |
5 | 6 | 7 | 8 | 9 | + | 0 | # | |
0×18 24 | 0x5E 94 | 0×8 8 | 0x1C 28 | 0x5A 90 | 0×42 66 | 0×52 82 | 0x4A 74 |
Ein/aus | Menu | Test | + | ↺ | | ◄ ◄ | ► | ►►| | 0 | - |
0×45 69 | 0×47 71 | 0×44 68 | 0×40 64 | 0×40 64 | 0×7 7 | 0×15 21 | 0×9 9 | 0×16 22 | 0×19 25 |
C | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
0xD 13 | 0xC 12 | 0×18 24 | 0x5E 94 | 0×8 8 | 0x1C 28 | 0x5A 90 | 0×42 66 | 0×52 82 | 0x4A 74 |
Die Tastencodes kannst du mit folgendem Programm herausfinden. Sie werden im Seriellen Monitor angezeigt.
// benötigte Bibliothek einbinden
#include "IRremote.h"
// 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.
#include <IRremote.h>
int EmpfaengerPin = 11;
int LED = 7;
Im setup-Teil wird die LED als OUTPUT definiert und die Infrarot-Empfänger initialisiert.
void setup()
{
Serial.begin(9600);
// Empfänger starten
IrReceiver.begin(EmpfaengerPin);
}
Im loop-Teil musst du die Tasten 1 und 2 mit if abfragen.
⇒ if
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);
}
}
}
Verwandte Anleitungen:
- Einmaleinsreihen - Anzeige mit Keyes-Fernbedienung
- Labyrinth-Spiel mit TFT und Fernbedienung
- Interrupt: Lauflicht mit Fernbedienung
- LEDs mit Fernbedienung schalten
- Würfeln einstellige 7-Segment-Anzeige und Fernbedienung
Letzte Aktualisierung: