IR távírányitó


Sokszor felmerül az igény az emberben, hogy milyen jó lenne ki/be-kapcsolni különböző dolgokat kényelmesen fotelból, ágyból nem felkelve, a mostani projekt erre lehet gyógyír.(persze nem teljes, mindenki egészítse ki a megfelelő teljesítmény kapcsolóval).
Egy mezei IR távirányító segítségével fogjuk kapcsolni a visszajelző ledjeinket.


A kapcsolás:


Kapcsolódási pontok:
IR érzékelő(CHQ1838):

1láb-OUT Ardu 3
2láb-GND Ardu GND
3láb-Vcc Ardu 5V


Ezek a lábkiosztások típusonként változnak ezért mindig ellenőrízük az IR érzékelő adatlapját.

A ledeket 270ohmos áramkorlátozó ellenálláson keresztül kössük be.


1.led anód Ardu 2
2.led anód Ardu 4
3.led anód Ardu7
közös katód Ardu GND

Könyvtár:

Töltsük le a könyvtárat a https://github.com/shirriff/Arduino-IRremote oldalról.

Tömörítsük ki, nevezzük át IRremote-ra, majd másoljuk be az Arduino/librarie könyvtárba.


Kód:
/*
source: www.electroschematics.com
You'll need to change the led pins and the codes
accordingly to your configuration and IR remote
*/

#include <IRremote.h>

int RECV_PIN = 3; // IR érzékelő kimenete
int led1 = 2;
int led2 = 4;
int led3 = 7;
int itsONled[] = {0,0,0,0};
/* a ledek értékei nullák*/

#define code1 26775 // ide írjuk be a soros monitor által leolvasott első IR kódot
#define code2 39015 // második kód
#define code3 45135 // harmadik kód


IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
Serial.begin(9600); // soros monitor bitrátája
irrecv.enableIRIn(); // IR vevő inditása
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
}

void loop() {
if (irrecv.decode(&results)) {
unsigned int value = results.value;
switch(value) {
case code1:
if(itsONled[1] == 1) { // ha 1.gombot lenyomtuk és első led be van kapcsolva akkor
digitalWrite(led1, LOW); // kikapcsoljuk
itsONled[1] = 0; // és a led állapotjelzőjét nullára kapcsoljuk
} else { // különben az első ledet
digitalWrite(led1, HIGH); // bekapcsoljuk
itsONled[1] = 1; // és az állapotjelzőjét 1-re állítjuk
}
break;
case code2:
if(itsONled[2] == 1) {
digitalWrite(led2, LOW);
itsONled[2] = 0;
} else {
digitalWrite(led2, HIGH);
itsONled[2] = 1;
}
break;
case code3:
if(itsONled[3] == 1) {
digitalWrite(led3, LOW);
itsONled[3] = 0;
} else {
digitalWrite(led3, HIGH);
itsONled[3] = 1;
}
break;
}
Serial.println(value); // kiírja a vevő által érzékelt értéket
irrecv.resume(); // új érték érzékelés
}
}


A program működéséről: ha feltöltöttük az Arduinóra akkor indítsuk el a soros monitort, majd
irányítsuk távirányítónkat az IR vevőre és nyomjuk meg az első használni kívánt gombot.
A soros monitor kiír párdarab 5jegyű számot az ezek az érzékelt IR értékek. Ami 65xxx-el kezdődik
azzal ne foglalkozzunk, ezek lesznek az üres értékek, minket az a szám fog érdekelni ami közte
lesz. Ez így néz ki:



A másik két gombot is nyomjuk meg az IR vevő felé fordítva a távirányítót így megkapjuk
a másik két gomb értékét is. Most ezt a három értéket kell be helyettesíteni a következő kódrészletbe:


#define code1 26775 // ide írjuk be a soros monitor által leolvasott első IR kódot
#define code2 39015 // második kód
#define code3 45135 // harmadik kód


ezt a módosított projektet töltsük fel az arduinora így már működik is a távirányítónk.
Első gombnyomásra bekapcsol az adott led a másodikra ki.