Arduino Programme mit einer Fernbedienung steuern – wie wäre das? Dieser Artikel zeigt wie es geht…

Mit diesem Projekt soll es möglich sein mit einer handelsüblichen Fernbedienung Arduino Programme zu steuern.

Vorbereitungen:

Für dieses Projekt brauchen wir folgende Bauteile für den Schaltungsaufbau:

Schaltungsaufbau und der erste Test:

Pin 1 vom TSOP kommt an Arduino-Pin 11.

Pin 2 vom TSOP kommt an Ground vom Arduino.

Pin 3 vom TSOP kommt an 5 Volt vom Arduino.

Nun wollen wir den Infrarot-Empfänger mal testen. Im Seriellen Monitor der Arduino Software sollen die HEX-Werte ausgegeben werden mit denen wir später dann auch das Programm steuern.

int receiverpin =11;
#include <IRremote.h>
IRrecv irrecv(receiverpin);
decode_results results;

void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();
}

void loop()
{
if (irrecv.decode(&results))
{
Serial.print(results.value, HEX);
Serial.print(" ");
irrecv.resume();
}
}

Die Fernbedienung und die Sache mit den IR-Codes:

Für dieses Projekt wird eine Fernbedienung benötigt, die sich auf die Sony-Codes einstellen lässt.

Ein Druck auf Taste 1 erzeugt den Hex-Wert 10. Ein Druck auf Taste 5 sollte den Hex-Wert 210 ergeben. Da ich mich für eine Vivanco-Fernbedienung entschieden habe: Set und TV1-Taste drücken bis rote LED leuchtet und Code 045 einstellen.

Programmierung:

int receiverpin =11;
#include <IRremote.h>
IRrecv irrecv(receiverpin);
decode_results results;

void setup()
{
irrecv.enableIRIn();
for(int z = 2; z < 8; z++)
{
pinMode(z, OUTPUT);
}}

void translateIR()
{
switch(results.value)
{
case 0x810: pinOn(2);
break;
case 0x410:pinOn (3);
break;
case 0xC10: pinOn(4);
break;
case 0x210: pinOn(5);
break;
case 0xA10: pinOn(6);
break;
case 0x610: pinOn(7);
break; 
}}

void pinOn(int pin)
{
digitalWrite(pin, HIGH);
delay(1000);
digitalWrite(pin, LOW);
}

void loop()
{
if(irrecv.decode(&results))
{
translateIR();
for (int z = 0 ; z < 2 ; z++)
{
irrecv.resume();
}
}
}

Wie geht es weiter?

Mit dem TSOP 4830 läuft dieses Projekt bereits ohne Probleme. Die Hex-Werte werden also im seriellen Monitor angezeigt, wenn ich die entsprechende Taste der Fernbedienung drücke. Manche Codes werden sogar mehrmals und auch öfter als dreimal ausgegeben. Um jetzt aber etwas zu sehen, müsste ich LEDs oder andere Dinge an die Arduino Pins anschließen und diese sollten sich dann per Infrarot steuern lassen.

In den nächsten Arduino Artikeln werden die Experimente mit der Infrarot Fernbedienung fortgesetzt.

Von Torsten