Evdeki televizyon, klima veya ses sistemi kumandalarınızı kullanarak odanızdaki ışıkları kablosuz olarak kontrol etmek ister miydiniz? Bu rehberde, oldukça ucuz ve kullanışlı bir bileşen olan IR (Kızılötesi) Alıcı Göz modülünü kullanacağız. Elimizdeki herhangi bir uzaktan kumandanın tuş kodlarını (HEX formatında) Arduino'muza öğreterek, 3 farklı LED’i tek tek veya hep birlikte nasıl açıp kapatabileceğimizi adım adım inceleyeceğiz.
Kızılötesi alıcı gözün genellikle önden bakıldığında 3 pini bulunur: Sinyal (Data), GND ve VCC. Bağlantıları yaparken bu sıralamaya çok dikkat edilmelidir. LED'leri ise dirençleri ile birlikte 11, 12 ve 13 numaralı pinlere bağlıyoruz.
| Bileşen ve Pini | Arduino Uno Pini |
|---|---|
| IR Alıcı Data (Sinyal/Out) pini | Pin 8 |
| IR Alıcı GND (-) pini | GND |
| IR Alıcı VCC (+) pini | 5V veya 3.3V (Modüle göre değişir) |
| 1. LED (Artı Ucu) | Pin 11 |
| 2. LED (Artı Ucu) | Pin 12 |
| 3. LED (Artı Ucu) | Pin 13 |

Bu projenin çalışması için Arduino IDE programınıza IRremote kütüphanesini kurmanız gerekir. Kütüphane yöneticisinden kurabilirsiniz. Eğer kütüphanenin çok yeni versiyonlarında (v3.0 ve sonrası) decode_results fonksiyonunun kaldırıldığına dair bir hata alırsanız, kütüphane yöneticisinden sürüm olarak v2.8.0 veya v2.x sürümlerinden birini seçip "Değiştir/Kur" diyerek bu klasik ve kararlı kod yapısını pürüzsüzce çalıştırabilirsiniz.
Aşağıdaki kodu doğrudan kopyalayıp Arduino kartınıza yükleyebilirsiniz. Kod içerisinde tanımlanan tuş kodları (HEX) örnek olarak verilmiştir. Kendi kumandanızın kodlarını nasıl ekleyeceğiniz çözümler kısmında anlatılmıştır.
#include <IRremote.h>
IRrecv irrecv(8); // IR alıcının data pini Arduino Pin 8'e bağlı
decode_results results;
int Led1 = 11, Led2 = 12, Led3 = 13;
// Kumanda üzerindeki tuşların benzersiz HEX kodları tanımlanıyor
#define TUS1 0x1CE36897
#define TUS2 0x1CE3A25D
#define TUS3 0x1CE36A95
#define TUS4 0x1CE3EA15
#define TUS5 0x1CE30AF5
#define TUS6 0x1CE3AA55
#define PowerTUS 0x1CE3F00F
#define MuteTUS 0x1CE332CD
void setup() {
irrecv.enableIRIn(); // IR alıcıyı aktif ediyoruz
pinMode(Led1, OUTPUT);
pinMode(Led2, OUTPUT);
pinMode(Led3, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)){
// Eğer kumandadan bir tuşa basıldığı algılandıysa
if(results.value == TUS1) // Led 1 Aç
digitalWrite(Led1, HIGH);
else if(results.value == TUS2) // Led 2 Aç
digitalWrite(Led2, HIGH);
else if(results.value == TUS3) // Led 3 Aç
digitalWrite(Led3, HIGH);
else if(results.value == TUS4) // Led 1 Kapat
digitalWrite(Led1, LOW);
else if(results.value == TUS5) // Led 2 Kapat
digitalWrite(Led2, LOW);
else if(results.value == TUS6) // Led 3 Kapat
digitalWrite(Led3, LOW);
else if(results.value == PowerTUS){ // Hepsini Aç
digitalWrite(Led1, HIGH);
digitalWrite(Led2, HIGH);
digitalWrite(Led3, HIGH);
}
else if(results.value == MuteTUS){ // Hepsini Kapat
digitalWrite(Led1, LOW);
digitalWrite(Led2, LOW);
digitalWrite(Led3, LOW);
}
irrecv.resume(); // Daha sonraki tuş basımları için alıcıyı hazırla ve bekle
}
}
Çözüm: Her kumandanın sinyal kodu farklıdır. Kendi kumandanızı uydurmak için koda Serial.begin(9600); ekleyin ve loop döngüsünün hemen başına Serial.println(results.value, HEX); yazarak seri port ekranını açın. Kumandanızdaki tuşlara bastıkça ekrana 1CE36897 gibi kodlar gelecektir. İşte o kodların başına 0x koyarak kodun en üstündeki #define tanımlamalarıyla değiştirmeniz yeterlidir.
Çözüm: IR kütüphanesinde bir tuşa elinizi basılı tuttuğunuzda, kodun sürekli tekrar etmemesi için kütüphane otomatik olarak "tekrar kodu" yani FFFFFFFF sinyalini üretir. Tuşları tek tek algılatmak için parmağınızı tuşa basıp hemen çekmeniz gerekir.
Henüz yorum yapılmamış. İlk yorumu siz yapın!