IR Ontvanger met Arduino (getest op de Arduino UNO)

Gebruik van de TSOP38238 ir ontvanger van VISHAYIR ontvanger

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"); 
    } 
}