Vrlo čest način upravljanja Arduino mikrokontrolerom je pomoću IR daljinskog.
U kompletu Arduinu komponenti dolazi i IR daljinski sa oznakom CarMP3 koji ima tipke sa brojevima kao i tipke za media upravljanje.
Na slici ispod je primjer uključivanja i isključivanja 1 do 6 dioda pritiskom na odgovarajuću brojčanu tipku IR daljinskog koji dolazi u sklopu Arduino kompleta.
Na slici desno je pomenuti IR daljinski.
Pritiskom na dugme IR daljinskog (neki od brojeva 0 do 6) Arduino uključuje odgovarajući broj LED dioda, bez obzira na prethodno stanje, odnosno koliko ih je bilo uključeno prije.
Uključene LED diode ostaju u tom stanju do pritiska na neku drugu tipku daljinskog (od 0 do 6).
Pritiskom na tipku sa brojem 0 (nula) isključuju se sve LED diode.
Normalno, da bi sve funkcionisalo, IR daljinski treba uperiti prema IR prijemniku.
Ispod je kôd sketch-a koji vrši uključivanje i isključivanje šeset LED dioda nakon pritiska na dugme (kopirajte kompletan kôd ispod u Arduino IDE prozor i upload-ujte ga na Arduino) :
/*
* UKLJUČIVANJE/ISKLJUČIVANJE 6 LED DIODA POMOĆU
* IR DALJINSKOG (Car MP3)
* Korišten hauppauge IR receiver na kablu
*
* Autor: Samir Gutić
* URL: http://amicus.ba
* Datum: 4. II 2017.
*/
#include <IRremote.h>
#include <IRremoteInt.h>
int IR_Pin = 2;
int intOdgoda=200;
IRrecv irPrimljeno(IR_Pin);
decode_results primljeno;
void setup()
{
Serial.begin(9600);
irPrimljeno.enableIRIn(); //Pokretanje IR prijemnika
}
void loop()
{
if (irPrimljeno.decode(&primljeno))
{
if (primljeno.value!=0xFFFFFFFF)
{
Serial.println(primljeno.value, HEX);
if (primljeno.value==0xFF6897)
{
Serial.println("Broj 0");
digitalWrite(13, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(12, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(11, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(9, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(8, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(7, LOW); // Isključuje LED
}
if (primljeno.value==0xFF30CF)
{
Serial.println("Broj 1");
digitalWrite(13, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(12, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(11, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(9, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(8, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(7, HIGH); // Uključuje LED
}
if (primljeno.value==0xFF18E7)
{
Serial.println("Broj 2");
digitalWrite(13, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(12, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(11, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(9, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(7, HIGH); // Uključuje LED
delay(intOdgoda);
digitalWrite(8, HIGH); // Uključuje LED
}
if (primljeno.value==0xFF7A85)
{
Serial.println("Broj 3");
digitalWrite(13, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(12, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(11, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(7, HIGH); // Uključuje LED
delay(intOdgoda);
digitalWrite(8, HIGH); // Uključuje LED
delay(intOdgoda);
digitalWrite(9, HIGH); // Uključuje LED
}
if (primljeno.value==0xFF10EF)
{
Serial.println("Broj 4");
digitalWrite(13, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(12, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(7, HIGH); // Uključuje LED
delay(intOdgoda);
digitalWrite(8, HIGH); // Uključuje LED
delay(intOdgoda);
digitalWrite(9, HIGH); // Uključuje LED
delay(intOdgoda);
digitalWrite(11, HIGH); // Uključuje LED
}
if (primljeno.value==0xFF38C7)
{
Serial.println("Broj 5");
digitalWrite(13, LOW); // Isključuje LED
delay(intOdgoda);
digitalWrite(7, HIGH); // Uključuje LED
delay(intOdgoda);
digitalWrite(8, HIGH); // Uključuje LED
delay(intOdgoda);
digitalWrite(9, HIGH); // Uključuje LED
delay(intOdgoda);
digitalWrite(11, HIGH); // Uključuje LED
delay(intOdgoda);
digitalWrite(12, HIGH); // Uključuje LED
}
if (primljeno.value==0xFF5AA5)
{
Serial.println("Broj 6");
digitalWrite(7, HIGH); // Uključuje LED
delay(intOdgoda);
digitalWrite(8, HIGH); // Uključuje LED
delay(intOdgoda);
digitalWrite(9, HIGH); // Uključuje LED
delay(intOdgoda);
digitalWrite(11, HIGH); // Uključuje LED
delay(intOdgoda);
digitalWrite(12, HIGH); // Uključuje LED
delay(intOdgoda);
digitalWrite(13, HIGH); // Uključuje LED
}
}
delay(2);
irPrimljeno.resume(); //Primanje sljedeće vrijednosti
}
}
Više detalja o korištenju IR daljinskog i lista svih HEX kodova koje može poslati CarMP3 IR daljinski upravljač možet epronaći u članku Arduino IR prijemnik.
Arduino prima heksadecimani kôd koji šalje daljinski i na osnovu tog kôda izvršava odgovarajući set instrukcija - uključivanja i isključivanja LED dioda.
U Arduino sketch-u je, pri provjeri u IF naredbi, ispred ovih kôdova potrebno dodati 0x (nula iks) da bi kodovi bili uspješno detektovani.
Šema spoja elemenata kreirana u Fritzing programu je na slici ispod.
Kao što se vidi sa šeme iznad, plus polovi LED dioda 1 do 6 su spojeni, preko svojih otpornika R=220Ω na pinove broj 7, 8, 9, 11, 12 i 13. Signalni pin IR prijemnika je spojen na pin broj 2. Ovaj IR receiver radi na 5V. Međutim ako pronađete neki koji radi na 3V samo ga, umjesto na 5v, treba spojiti na pin 3V.
Električna šema spoja je na sljedećoj slici.
Ispod je video koji prikazuje kako funkcioniše uključivanje i isključivanje šest LED dioda, nakon pritiska na dugme na IR daljinskom.
Uključivanje i isključivanje LED dioda se ne vrši trenutno nego uz malu animaciju kreiranu zahvaljujući pauzama između akcija uključivanja i isključivanja i redoslijedu izvođenja tih akcija - analizirajte sketch iznad.
Potrebne komponente:
1 x Arduino UNO
1 x Breadboard (velika)
6 x LED
6 x otpornik 220Ω
1 x IR senzor (npr. haupauge IR senzor)
1 x IR daljinski (npr. CarMP3)
Žice za spajanje
9V napajanje