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.
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.


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