Arduino IR (Kızılötesi) Kod Çözücü
Bütün kızılötesi kumandaların tuş kodlarını öğrenmek için bu çalışmayı kullanabilirsiniz. İhtiyacınız olanlar Arduino Uno veya diğerleri, IR alıcı LED, birkaç direnç ve LED. Direnç ve LED'ler olaya görsellik katmak için kullanıldı. Kullanmasanız da olur. Seri port ekranında, kumandadan bastığınız tuşların HEX, BIN, DEC kodlarını görüyorsunuz.
VİDEO:
Kod dosyası içinde gerekli açıklamaların hepsi yapıldı. Geliştirilmesi kolay. Next uydu kumandası, Bosch klima kumandası, Sony TV kumandası, yukarıda resimdeki oto teypleri için kullanılan minik kumanda, elime geçen daha birçok çalışan eski-yeni kumanda ile denedim. Sorun yok.
Projeyi ilk gerçekleştirdiğimde sonuç elde edememiştim. IR alıcı LED'lerim bozukmuş. Elimde iki tane vardı ikisi de bozuk çıktı. Artık kullanmadığım AXEN AX-3000FTA Uydu Alıcısı ön panelini söktüm. Üzerinden IR LED'i sökecektim ama video ve resimlerde de göreceğiniz gibi kablolarla devreye bağladım. İşe yaradı.
IR LED'i bağlarken bacaklarına dikkat edin. Bazen elinizdekilerle şemada verilenlerin bacak bağlantıları uymuyor, elemanın bozulmasına neden oluyor. Artı (+) bacağı beslemeye 1K'lık veya uygun bir dirençle bağlayıp, aşırı akımdan koruyabilirsiniz. Bu devrede LED'ler 2,3,4,5.pinlere bağlanıyor, IR LED'in sinyal ucu 8.pine bağlanıyor. Siz isterseniz farklı pinleri kullanabilirsiniz. LED'lerin bacağına 330R-1K arası direnç bağlayın.
s(inyal)-output(çıkış)
Bendekinin bacak sıralaması [+ - s] şeklindeydi.
Bendekinin bacak sıralaması [+ - s] şeklindeydi.
Kodlar doğru ve devreniz çalışmıyorsa önce arduinonuza bağlı elemanların bağlantılarını , sonra da IR LED'in bacak bağlantısını ve sağlamlığını kontrol edin.
Devre çalıştığında seri port ekran görüntüsü aşağıdaki gibi olacaktır.
Projede Arduino-IRremote kütüphanesi kullanılıyor. Kütüphaneyi aşağıdaki program dosyalarını indir linkinde veya https://github.com/z3t0/Arduino-IRremote adresinden indirip Arduino Ide programınıza ekleyebilirsiniz. Dosyaları indirdiğiniz paketin içinde kütüphane var. Kütüphne içindeki Arduino-IRremote-master klasörünü C:\Users\kullanıcı\Documents\Arduino\libraries klasörü altına yerleştirip projenizde kullanabilirsiniz.
VİDEO:
Arduino Ide Kodları:
/* Kodla Gitsin
* Kızıl Ötesi Kod Çözücü ve Test
* kodlagitsin.blogspot.com
*/
#include <IRremote.h> //kütüphane indirme adresi: https://github.com/z3t0/Arduino-IRremote
int RECV_PIN = 8; // IR alıcısı giriş portu
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
// 2.3.4.5. pinler Ledler için çıkış olarak ayarlandı
pinMode(2,OUTPUT); // kırmızı led - led bacağına 330R-1K arası direnç bağlayın
pinMode(3,OUTPUT); // kırmızı led - led bacağına 330R-1K arası direnç bağlayın
pinMode(4,OUTPUT); // kırmızı led - led bacağına 330R-1K arası direnç bağlayın
pinMode(5,OUTPUT); // mavi led - led bacağına 330R-1K arası direnç bağlayın
Serial.begin(9600); // seri port ekranbağlantı hızı
irrecv.enableIRIn(); // Alış başlıyor
Serial.println("KODLAR:");
}
void loop() {
if (irrecv.decode(&results)) {
//Serial.print komutu seriport ekranda satırı yazar yan yana devam eder
//Serial.println komutu seri port ekranda satırı yazar alt satıra geçer
Serial.print("HEX> ");
Serial.println(results.value, HEX); // Gelen veri hexadecimal (16'lık) tabanda yazılır
Serial.print("BIN> ");
Serial.println(results.value, BIN); // Gelen veri binary (2'lik) tabanda yazılır
Serial.print("DEC> ");
Serial.println(results.value, DEC); // Gelen veri decimal (10'luk)tabanda yazılır
Serial.println("---------------------------------------");
if(results.value==0x80BF49B6) // CH... ise 1. Led yansın - bu satırdaki hex kodu elimdeki kumandaya göre yazdım, siz kendinize göre değiştirin
digitalWrite(2,HIGH);
else if(results.value==0x80BFC936) // CH... ise 2. Led yansın - bu satırdaki hex kodu elimdeki kumandaya göre yazdım, siz kendinize göre değiştirin
digitalWrite(3,HIGH);
else if(results.value==0x80BF33CC) // CH... ise 3. Led yansın - bu satırdaki hex kodu elimdeki kumandaya göre yazdım, siz kendinize göre değiştirin
digitalWrite(4,HIGH);
else if(results.value==0x80BF738C){ // CH... ise 1.2.3. Led yansın - bu satırdaki hex kodu elimdeki kumandaya göre yazdım, siz kendinize göre değiştirin
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
}
else { // Eğer diğer/başka butonlara basılmış ise 1.2.3.ledler sönsün
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH); // diğer ledler (1.2.3.) sönerken 5.led yansın
delay(250); // 5.ledin yanık kalma süresi- mavi led bir süre yansın
digitalWrite(5,LOW); // 5.led sönsün
}
irrecv.resume(); // yeni bir değer almak için yola devam ediyoruz
}
delay(250); // sinyaller karışmasın azıcık bekleyelim
}
Kullanılan Programlar : Arduino Ide 1.8.8
Kullanılan Programlayıcı: Arduino Uno (Klon)
Yorumlar
Yorum Gönder