Arduino İle IR Alıcı Örnek Projeleri
Merhaba arkadaşlar bu yazımızda arduino ile IR alıcı kullanımını daha iyi anlamak için iki proje yapacağız. Birinci projemizde kumandamızdan basılan tuşları algılayıp bunu lcd ekrana yazdıracağız. İkinci projemizde ise kumandadan basılan tuşu algılayıp basılan tuşa göre led yakıp kapatacağız. Eğer IR alıcılar hakkında bilginiz yoksa ve temel konuları öğrenmek için ilk yazımızı aşağıdaki linkten okumanızı tavsiye ederiz.
Projelerde Kullanılan Kütüphaneler
Aşağıdaki projelerde kullanılan kütüphaneleri aşağıdan indirebilirsiniz. Eğer Kütüphane yüklemesini bilmiyorsanız yukarıdaki makalemizden öğrenebilirsiniz.
Basılan Tuşu Algılama ve LCD’ye Yazdırma
Bu projede kumandadan basılan tuşu algılayacağız ve bunu lcd ekrana yazdıracağız.
Bu projede kullanılan elemanlar:
- 16×2 LCD Ekran
- 38 KHz IR Alıcı Sensör
- Direnç(200 ohm ile 2k ohm arası olabilir).
- 10K Potansiyometre
- Jumper Kablolar
- Arduino Uno
- IR Verici Kumanda
Projemizde aşağıdaki resimde olan kumanda algılanmıştır. Eğer farklı bir kumanda kullanıyor iseniz yukarıdaki linkteki ilk yazımızı okumanızı öneririm. Çünkü kumandalar iletişim için farklı sinyal protokolleri kullanırlar. İlk başta bu protokolleri tespit etmemiz gerekiyor. Daha sonra tuş okumamız lazım.
Eğer malzemelerimiz tam ise aşağıdaki bağlantı şemamızı kuralım.
Burada direnç, LCD’nin arka ışık parlaklığını ayarlar. 200 ohm ile 2K ohm’a kadar herhangi bir direnç olabilir. Kullanılan potansiyometre ise karakter kontrastını ayarlar. Bunun için 10K ohm potansiyometre kullanıyoruz.
Bağlantılarımız tamam ise aşağıdaki kodu Arduino’ya yükleyin.
//IR kütüphanemizi ekliyoruz
#include <IRremote.h>
// LCD Kütüphanemizi eklemeliyiz.
#include <LiquidCrystal.h>
// IR alıcı pinimizi tanımlıyoruz
const int RECV_PIN = 7;
//lcd bağlantılarımızı tanımlıyoruz
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//Alıcı nesnemizi tanımlıyoruz
IRrecv irrecv(RECV_PIN);
//çözülmüş kodu tutacak nesne tanımlıyoruz
decode_results results;
//tuşumuzu tutacak değişkeni tutuyoruz
unsigned long key_value = 0;
void setup(){
Serial.begin(9600);
irrecv.enableIRIn();
irrecv.blink13(true);
lcd.begin(16, 2);
}
void loop(){
if (irrecv.decode(&results)){
// if yapısı ile tuş kontrolü yapıyoruz.
if (results.value == 0XFFFFFFFF)
results.value = key_value;
lcd.setCursor(0, 0);
lcd.clear();
//kodlara göre tuş yazdırıyoruz
switch(results.value){
case 0xFFA25D:
lcd.print("CH-");
break;
case 0xFF629D:
lcd.print("CH");
break;
case 0xFFE21D:
lcd.print("CH+");
break;
case 0xFF22DD:
lcd.print("|<<");
break;
case 0xFF02FD:
lcd.print(">>|");
break ;
case 0xFFC23D:
lcd.print(">|");
break ;
case 0xFFE01F:
lcd.print("-");
break ;
case 0xFFA857:
lcd.print("+");
break ;
case 0xFF906F:
lcd.print("EQ");
break ;
case 0xFF6897:
lcd.print("0");
break ;
case 0xFF9867:
lcd.print("100+");
break ;
case 0xFFB04F:
lcd.print("200+");
break ;
case 0xFF30CF:
lcd.print("1");
break ;
case 0xFF18E7:
lcd.print("2");
break ;
case 0xFF7A85:
lcd.print("3");
break ;
case 0xFF10EF:
lcd.print("4");
break ;
case 0xFF38C7:
lcd.print("5");
break ;
case 0xFF5AA5:
lcd.print("6");
break ;
case 0xFF42BD:
lcd.print("7");
break ;
case 0xFF4AB5:
lcd.print("8");
break ;
case 0xFF52AD:
lcd.print("9");
break ;
}
key_value = results.value;
irrecv.resume();
}
}
Onaltılı(hexademical) kodlar, uzaktan kumandanızın verdiği kodlarla eşleşmiyorsa, 0xXXXXXXXXX, yazan her karakter için algıladığınız koda göre değiştirmeniz gerekiyor. Eğer kodunuzu bilmiyorsanız ilk yazımızdan nasıl okunabilineceğini öğrenebilirsiniz.
IR Verici İle Basılan Tuşa Göre Led Yakma
Bu örnekte, belirli bir düğmeye basıldığında bir LED yakacağız. Servo motorları kontrol etmek veya uzaktan kumandadan herhangi bir düğmeye basarak röleleri açmak gibi bir işlem uygulattırmak için sadece if bloğunu değiştirmeniz yeterli olacaktır. Aşağıdaki yazılarımızdan servo motor veya röle kullanımını öğrenebilirsiniz.
Bu projede kullanılan elemanlar:
- Arduino Uno
- Jumper Kablolar
- 38 KHz Alıcı Sensör
- 1 Adet Yeşil 1 Adet Kırmızı Led
- 2 Adet 1K Ohm Direnç
Devre, pin 10’a bağlı kırmızı bir LED ve pin 11’e bağlı yeşil bir LED ile Arduino’ya bağlı IR alıcısına sahiptir. Aşağıdaki bağlantı şemasına göre bağlantılarımızı yapalım.
Aşağıdaki kod “5” butonuna basıldığında 2 saniyeliğine dijital pin 10 HIGH, “2” butonuna basıldığında ise 2 saniyeliğine dijital pin 11 HIGH yazacaktır:
#include <IRremote.h>
const int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;
const int redPin = 10;
const int greenPin = 11;
void setup(){
irrecv.enableIRIn();
irrecv.blink13(true);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
}
void loop(){
if (irrecv.decode(&results)){
switch(results.value){
case 0xFF38C7: //Keypad button "5"
digitalWrite(redPin, HIGH);
delay(2000);
digitalWrite(redPin, LOW);
}
switch(results.value){
case 0xFF18E7: //Keypad button "2"
digitalWrite(greenPin, HIGH);
delay(2000);
digitalWrite(greenPin, LOW);
}
irrecv.resume();
}
}
Bu projeleri geliştirmek size kaldı. Bu projelere farklı modüller ekleyerek farklı amaçlar için kullanabilirsiniz.