Arduino ile kullanabileceğimiz kablosuz haberleşme araçlarından biri de Kızılötesi (IR:InfraRed) ışınlar. Bu ışınlar oldukça kullanışlı. Elektromanyetik spektrumda gözle görünen bölgenin daha düşük enerjili alanında yer alıyor. Evlerimizdeki uzaktan kumadaların çoğu bu sistemi kullanıyor. Bizde bu uygulamamızda kumanda modülünü kullanmayı göreceğiz.
Gerekli malzemeler:
- Arduino UNO
- Breadboard
- IR alıcı-verici kumanda seti
- Erkek-dişi jumper kablo
- Erkek-erkek jumper kablo
- 1 adet LED
- 1 adet 330 Ω direnç
Devremizi bu şekilde kuruyoruz. Devremizde en çok dikkat edeceğimiz kumanda sensörü alıcısını doğru bacaklarına 5v, GND ve Sinyal bağlamak. Bunun için aşağıdaki şekle göre dikkatli bağlayınız yoksa alıcı bozulabilir.


Kodlara geçmeden önce kumanda için ilgili kütüphaneyi aşağıdaki bağlantıdan indirelim.
Not: Çizim programında Chq1838 kızıl ötesi alıcının resmi bulunmadığından başka bir kızıl ötesi alıcısı ile devre şeması çizildi.
İlk olarak kumanda tuş değerlerindeki kodları öğrenmek için aşağıdaki kodları yazıyoruz. Kumanda tuş kodlarını Serial Ekrandan bakıp bir kenara not ediyoruz. Sonrasındaki uygulamamızda hangi tuşla ne yapmak istiyorsak onu kullanmak için kodunu eşitlememiz gerekecek. Bir sonraki led uygulamamızda daha iyi anlaşılacak.
#include <IRremote.h> // Kumanda kütüphanesi ekledik
int RECV_PIN = 2; // Kumanda alıcı pini 2 ye bağladık
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
irrecv.enableIRIn();
Serial.begin(9600);
}
void loop() {
if (irrecv.decode( & results)) {
Serial.println(results.value); // Seri ekranda formatta kumanda tuş kodlarını yazdır.
irrecv.resume(); // Daha sonraki değer için bekle.
}
}
Devremizde kumandadan 1 tuşuna bastığımızda led yanacak, 2 tuşuna bastığımızda ledimiz kapancak. ilgili kodları inceleyelim.
#include <IRremote.h> // Kumanda kütüphanesi ekledik
int RECV_PIN = 2; // Kumanda alıcı pini 2 ye bağladık
IRrecv irrecv(RECV_PIN);
decode_results results;
int led1 = 9;
#define btn1 16724175
#define btn2 16718055
// buton1 = 16724175
// buton2 = 16718055
void setup() {
pinMode(led1, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode( & results)) {
Serial.println(results.value); // Seri ekranda hex formatta bu adresi yazdır.
if (results.value == btn1 ) {
digitalWrite(led1, HIGH);
}
else if (results.value == btn2) {
digitalWrite(led1, LOW);
}
irrecv.resume(); // Daha sonraki değer için bekle.
}
}
Yazar hakkında