Die Experimente mit der Infrarot Fernbedienung werden fortgesetzt und einige neue Codes ausprobiert…
Schaltungsaufbau und der erste Test:
Pin 1 vom TSOP kommt an Arduino-Pin 11.
Pin 2 vom TSOP kommt an Arduino Ground.
Pin 3 vom TSOP kommt an Arduino 5 Volt.
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();
}
}
Aufgabenstellung:
Diese Infrarot-Projekt soll folgende Aufgabe erfüllen:
Taste 1 = rote LED leuchtet
Taste 2 = grüne LED leuchtet
Taste 3 = rote und grüne LED leuchten
Taste 4 = rote LED blinkt
Taste 5 = grüne LED blinkt
Taste 6 = rote und grüne LED blinken
Als IR-Receiver kommt auch immer noch der TSOP 4830 zum Einsatz.
Programmierung:
int receiverpin =11;
#include <IRremote.h>
IRrecv irrecv(receiverpin);
decode_results results;
void setup()
{
irrecv.enableIRIn();
// for-Schleife gelöscht
pinMode(2, OUTPUT);
pinMode(3, 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);
}
void loop()
{
if(irrecv.decode(&results))
{
translateIR();
for (int z = 0 ; z < 2 ; z++)
{
irrecv.resume();
}
}
}
Dieser Code hat noch einen kleinen Schönheitsfehler: Die vorherige LED wird nicht ausgeschaltet, doch darum kümmern wir uns dann im nächsten Artikel.