Merhaba arkadaşlar, bu uygulamamızda IR alıcı ve kumanda kullanarak kumandadaki tuşlara karşılık gelen değerleri okuma işlemi yapacağız. Bu değerleri okuduktan sonra ileriki zamanlarda kumanda ile bir şeyleri kontrol edebileceğiz.

Malzeme Listesi

Devre Şeması

Malzeme listesindeki malzemeleri kullanarak devremizi aşağıdaki şemaya uygun olarak kuralım. IR alıcı modülünün bağlantıları bazen farklılık gösterebiliyor. Malzemeler kısmında bulunan modülümüz için bağlantı aşağıdaki gibidir. Bu IR alıcı modülü sensörleri 3.3V-5V arası voltaj ile çalışabilmektedir. Devremizde 3.3V çıkışına bağladık. Siz isterseniz 5V çıkışına da bağlayabilirsiniz. Data olarak da dijital 2 pinine bağlıyoruz.

Arduino Kodları

İlk önce gerekli olan kütüphaneyi indirmemiz gerekiyor.  Arduino ide programından Taslak -> Library Ekle kısmında aşağı tarafta kütüphaneniz indirilmiş ise tıklayarak projenize ekleyebilirsiniz veya yoksa bu linkten  indirebilirsiniz. İndirme işlemini tamamladıktan sonra Taslak -> Library Ekle -> .Zıp kitaplığı ekle seçeneğine tıklayarak indirmiş olduğunuz zip dosyasını seçerek kütüphane yükleme işlemini tamamlayabilirsiniz. Kütüphaneyi kodumuza eklemek için #include <IRremote.h> bu kodu en başa yazabilirsiniz veya Taslak -> Library Ekle kısmından IRremote seçeneğine tıklayarsanız kütüphane otomatik olarak kodumuza eklenecektir. Aşağıdaki resimler yardımcı olacaktır.

                                            

Kütüphanemizi ekledikten sonra kod kısmına geçebiliriz. İlk satırda gördüğünüz gibi kütüphanemizi ekledik. Daha sonra 2.satırdaki gördüğünüz kod ile IR Alıcı modülümüzün Sinyal çıkışının bağlandığı pin numarasını giriyoruz. Biz 2 numaraya bağlamıştık o yüzden 2 yazdık. Decode_results değişken türünde bir results isimli değişken oluşturuyoruz. Bu kodlar kütüphane ile ilgilidir.

Setup fonksiyonun irrecv.enableIRIn komutu ile IR Alıcı modülümüzü aktif ediyoruz. Kumandadan gelen HEX kodlarını ekranda göstermek için Serial.begin(9600) kodu ile de serial haberleşme başlatıyoruz.

Loop fonksiyonunda if kodu ile IR alıcıya gelen bir değer var mı diye kontrol ediyoruz. Yani kumandadan bir tuşa basıldığı zaman if bloğunun içine giriyoruz. İf bloğunun içinde ise gelen değeri HEX formatında serial ekranda yazdırıyoruz ve irrecv.resume komutu ile bir sonraki değerin gelmesini sağlıyoruz. Gelen değeri almak için devam et anlamında da düşünebilirsiniz. Bu uygulama sayesinde kumandamızdaki tuşların hangi kodlara karşılık geldiğini öğrenmiş olduk. Tuşlara basarken FFFFFFFF gibi bir kod görebilirsiniz. Bu kod kumandadan herhangi bir tuşa basılı tutulduğu anlamında gelir. Normal olarak basarsanız farklı bir kod gözükecektir.

#include <IRremote.h> 

IRrecv irrecv(2); 
decode_results results;
void setup() {
  irrecv.enableIRIn();
  Serial.begin(9600); 
}
void loop() {
  if (irrecv.decode(&results)){ 
    Serial.println(results.value, HEX); 
    irrecv.resume();
  } 
}

Kodları yazdıktan sonra arduinomuzu bilgisayara bağlayıp yükleme işlemini yapabiliriz. Yükleme işlemini yaptıktan sonra serial monitörü açarak ve kumandadan tuşlara basarak hangi tuşun hangi hex koduna karşılık geldiğini öğrenebilirsiniz. 

Yazımı okuduğunuz için teşekkür ederim. Bir sonraki projemizde görüşmek üzere 🙂

11 YORUMLAR

  1. merhaba ben örumcek robot yapıyorum fakat kumandaya bastıgımda sensor algılıyor ama servolar hareket etmiyor bende kumandaya tanımlı degildir diye duşundum verdiginiz kodlarla tanımlamaya calışınca mesela 1. buttona bastıgımda değer = FFA25D bu cıkıyo robotun koduna bunu tanımladıgımda C:\Users\tsfrk\Downloads\orumcek.robot.kod\orumcek.robot.kod.ino: In function ‘void loop()’:
    orumcek.robot.kod:20:13: error: ‘FFA25D’ was not declared in this scope
    #define ir1 FFA25D
    ^
    C:\Users\tsfrk\Downloads\orumcek.robot.kod\orumcek.robot.kod.ino:167:14: note: in expansion of macro ‘ir1’
    case ir1:
    ^~~
    orumcek.robot.kod:21:13: error: ‘FF629D’ was not declared in this scope
    #define ir2 FF629D
    ^
    C:\Users\tsfrk\Downloads\orumcek.robot.kod\orumcek.robot.kod.ino:172:14: note: in expansion of macro ‘ir2’
    case ir2:
    ^~~
    orumcek.robot.kod:22:13: error: ‘FFE21D’ was not declared in this scope
    #define ir3 FFE21D
    ^
    C:\Users\tsfrk\Downloads\orumcek.robot.kod\orumcek.robot.kod.ino:177:14: note: in expansion of macro ‘ir3’
    case ir3:
    ^~~
    orumcek.robot.kod:23:13: error: ‘FF22DD’ was not declared in this scope
    #define ir4 FF22DD
    ^
    C:\Users\tsfrk\Downloads\orumcek.robot.kod\orumcek.robot.kod.ino:182:14: note: in expansion of macro ‘ir4’
    case ir4:
    ^~~
    orumcek.robot.kod:24:13: error: ‘FF02FD’ was not declared in this scope
    #define ir5 FF02FD
    ^
    C:\Users\tsfrk\Downloads\orumcek.robot.kod\orumcek.robot.kod.ino:186:14: note: in expansion of macro ‘ir5’
    case ir5:
    ^~~
    “IRremote.h” için birden fazla library bulundu
    Kullanılıyor: C:\Users\tsfrk\OneDrive\Belgeler\Arduino\libraries\IRremote
    Kullanılmıyor: C:\Users\tsfrk\OneDrive\Belgeler\Arduino\libraries\Arduino-IRremote-master
    exit status 1
    ‘FFA25D’ was not declared in this scope

    boyle bi hata alıyorum

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz