Öncelikle buraya tıklayarak IR kontrol kütüphane dosyasını bilgisayarınıza indirmeli ve genelde C dizininde yer alan Program files klasörü altındaki ARDUINO içinde yer alan libraries klasörüne yapıştırmalısınız. Örneğin bu yol benim bilgisayarımda C:\Program Files (x86)\Arduino\libraries şeklindedir. Eğer bu işlemi programı yazdıktan sonra yaparsanız arduino programını kapatıp açmalısınız. Derleme hatası verirse Libraries klasöründeki RobotIRremote klasörünü siliniz.
IR alıcı sensörümüzün datasheet dosyasına buradan ulaşabilirsiniz. Kısaca çarpı şeklindeki ön kafes size bakıyor iken soldaki uç çıkış, ortadaki uç eksi ve sağdaki uç +5V ucudur.
/* 23.11.2014
www.robotkursu.com
öğrenci IR alıcı-verici sistemlerin çalışmasını öğrenir.
Kumandadan 1 nolu tuşa basınca led yanar. 2 nolu tuşa basınca söner.
Tuşlara basıldığında gönderilen bilginin hex karşılığı aşağıdaki şekildedir.
1: FF30CF
2: FF18E7
*/
#include <IRremote.h> // Bu iki kütüphaneyi linkten indirip anlatılan yere kopyalamalısınız.
#include <IRremoteInt.h> // Kütüphane tanımlı değilse IRrecv- decode_results gibi özel komutlar kırmızı renkte olmaz
int led=5; // led arduinonun 5 nolu pinine bağlanacak. Bu pine led ismini verdik.
IRrecv alici(2); // 2 nolu pinin alıcı sensör çıkışına bağlandığını gösteriyoruz.
decode_results bilgi; // IR alıcı sensör çıkışından gelen seri datayı bilgi adındaki değişkene kaydedecek.
void setup() // ayarlar fonksiyonu.
{
alici.enableIRIn(); // ir alıcıyı aktif eder.pinMode komutu ile 2 nolu pini giriş yapmaya gerek yoktur.
pinMode(led,OUTPUT); // led pinini çıkış olarak ayarladık.
}
void loop() // ana program-ana döngü
{
if (alici.decode(&bilgi)) // bilgi değişkenindeki değeri aldık
{
oku_karsilastir(); // oku_karsilastir isimli fonksiyona git.
alici.resume(); // Sensörden yeni bilgiyi oku
}
}
void oku_karsilastir()
{
switch(bilgi.value)
{
case 0xFF30CF: // eğer bilgi değeri FF30CF ise yani 1 e basılmışsa
digitalWrite(led,HIGH); // ledi yak
break; // oku_karsilastir fonksiyonundan çık. ana programa git.
case 0xFF18E7: // eğer bilgi değeri FF18E7 ise yani 2 ye basılmışsa
digitalWrite(led,LOW); // ledi söndür
break; // oku_karsilastir fonksiyonundan çık. ana programa git.
// bütün tuşlara bir görev atanabilir. Bunun için aşağıya doğru
// case komutları tek tek yazılmalıdır.
}
}