IR Ontvanger met Arduino (getest op de Arduino UNO)
Gebruik van de TSOP38238 ir ontvanger van VISHAY
Volgens de datasheet moet je 0,1 microfarad tussen + en - zetten en een weerstand van 33 - 1 kohm tussen de + en de voeding dit om de ontvanger voor EOS (electrische over stress) te beschermen. De voedingspanning mag tussen de 2,5 en 5,5 V liggen.
Download en installeer de IR lib Arduino-IRremote-master.zip Zie de instructie op de arduino website hoe je een lib installeer mbv de lib manager
In Voorbeelden --> IRremote --> IRrevcDumpV2 is het script waarmee je de code van een IR zender (afstandbediening) naar de serieele monitor breng. Ik gebruikte de JVC LP20878-003. De zo verworven code heb je nodig in onderstaande script.
Afhankelijk van je afstandbediening zie je: (line39) Code: C284 (knop1), (line 44) Code: C244 (knop2), (line 50) Code: C2C4 (knop3)
#include "IRremote.h"
int receiver = 11; // De IR ontvanger aangesloten op pin 11
IRrecv irrecv(receiver); // een instantie van 'irrecv' creeren
decode_results results; // een instantie van 'decode_results creeren'
int knop1 = 5;
int knop2 = 6;
int knop3 = 7;
void setup()
{
Serial.begin(9600);
Serial.println(" IR Ontvanger van knopcodes van de JVC afstandsbediening");
irrecv.enableIRIn(); // Start de ontvanger
pinMode(knop1, OUTPUT);
pinMode(knop2, OUTPUT);
pinMode(knop3, OUTPUT);
}
void loop()
{
if (irrecv.decode(&results)) // = true als er een signaal is ontvangen
{
translateIR();
irrecv.resume(); //zodat je weer opnieuw code kan invoeren
}
}
void translateIR() // Onderneemt actie als de code is ontvangen
{
switch (results.value)
{
case 0xC284: Serial.println(" Knop 1 is ingedrukt de led blijft 3 sec branden");
digitalWrite(knop1, HIGH);
delay(3000);
digitalWrite(knop1, LOW);
break;
case 0xC244: Serial.println(" Knop 2 is ingedrukt de led blijft 3 sec branden");
digitalWrite(knop2, HIGH);
delay(3000);
digitalWrite(knop2, LOW);
break;
case 0xC2C4: Serial.println(" Knop 3 is ingedrukt de led blijft 3 sec branden");
digitalWrite(knop3, HIGH);
delay(3000);
digitalWrite(knop3, LOW);
break;
default:
Serial.println("Deze knop is niet geprogrammeerd");
}
}