|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Mit Hilfe eines Infrarotempfängers kann das Arduinoboard die Befehle
einer IR-Fernbedienung auswerten. Die Daten werden dabei in Form
von Infrarotlicht von der Fernbedienung zum Empfänger gesendet. Um sich die Programmierung zu vereinfachen, gibt es eine Library IRremote.h von Ken Shirriff (2009), die einem die Arbeit erleichtert, denn das Infrarotlicht wird mit einem Code verschlüssselt gesendet. Um diesen Code selber auszulesen und in passende Werte umzuwandeln, wären sehr viele Zeilen Code erforderlich. Mit dem folgenden Sketch kann man die Signalfrequenz jeder beliebigen Fernbedienung auslesen. Diese Informationen benötigt man, um nachher auf die verschiedenen Signale reagieren zu können. Es ist zu beachten, dass unterschiedliche IR-Steuerungen auch unterschiedlichen Codes übertragen. Das bedeutet daher, dass man, bevor man die IR-Steuerung einsetzt, wissen muss, welcher Code hinter welcher Taste steckt. |
Der Code für diesen Sketch bezieht sich auf das obige Schaltbild. #include <IRremote.h > // Die IRremote- Library wird hier installiert int RECV_PIN = 2; // An Pin 2 werden die empfangenen Daten vom Infrarotsensor gesammelt IRrecv irrecv(RECV_PIN); // Ein IRrecv- Objekt wird definiert, das die Datenauswertung an Pin 2 möglich macht decode_results results; // Die dekodierten Daten werden in Results gespeichert void setup(){ Serial.begin(9600); // Die Verbindung mit dem seriellen Monitor wird möglich gemacht irrecv.enableIRIn(); // Der Infrarotsensor wird hier initialisiert } void loop(){ if(irrecv.decode(&results)) {// Wenn Daten empfangen wurden Serial.println(results.value,DEC); // gibt den Code in Dezimalzahlen aus irrecv.resume(); // Warte auf nächsten Wert } } |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Ein Druck auf die Taste 1 der Infrarotfernbedienung bewirkt, dass am Serialmonitor die Zahl 16724175 ausgegeben wird. Dies ist der entschlüsselte Zahlencode, der sich hinter dieser Taste verbirgt. Wenn man die Taste dauerhaft gedrückt hält, erscheint permanent die Zahl 4294967295. Dies ist der Code, der angibt, dass eine Taste dauerhaft gedrückt wird. Diese Zahl ist unabhängig davon, welche Taste gedrückt wird. Es können aber auch noch andere Zahlen auftauchen, falls eine Taste nur ganz kurz oder pulsierend gedrückt wird. In dem Fall kann der Sensor keinen eindeutigen Wert auslesen. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
#include <IRremote.h> int RECV_PIN = 2; Irrecv irrecv(RECV_PIN); decode_results results; void setup(){ pinMode(13,OUTPUT); //Pin 13 als Ausgang definieren für die LED irrecv.enableIRIn();} void loop() { if(irrecv.decode(&results)) { if(results.value == 16718055) // Wenn der Sensor die Zahl 16718055 empfängt - entspricht Pfeil hoch {digitalWrite(13,HIGH);} // mache LED an if(results.value == 16730805) // Wenn der Sensor die Zahl 16730805 empfängt - entspricht Pfeil runter {digitalWrite(13,LOW);} // mache LED aus irrecv.resume(); // Warte auf nächsten Wert } } |
![]() |