30 Kasım 2014 Pazar

Kızılötesi Alıcı-Kumanda Kontrolü



Arduino İle Kızılötesi Alıcı-Kumanda Kontrolü

Kızılötesi ışınlar insan gözünün algılayabileceği dalga boyu aralığı dışında çalışan elektromanyetik dalgalardır. Kızılötesi ışınların yoğun olarak kullanıldığı 2 alan vardır. Askeri olarak gece görüşünün sağlanması için kullanılırlar. İnsan da vücut sıcaklığından ötürü belirli bir kızılötesi ışın yayar. En yaygın ikinci uygulama ise kısa mesafe haberleşmedir. Uzaktan kumandalar da kızılötesi ışın kullanılır.
Bu yazımızda Kızılötesi kumanda ve VS1838B kızılötesi alıcıyı kullanarak, arduino aracılığı ile iki adet ledin yanıp sönme durumunu kontrol edeceğiz.
IRremote

Arduino ile Kızılötesi Alıcı Kumanda Kontrolü Devresi

IR

Arduino ile Kızılötesi Alıcı Kumanda Kontrolü Akış Diagramı

Arduino_IR_Flowchart

Arduino ile Kızılötesi Alıcı Kumanda Kontrolü Örnek Kodu


IR-remote kütüphanesini buradan indiriniz.
İndirdiğiniz kütüphaneyi, arduino’nun diğer kütüphanelerinin olduğu klasöre kaydediniz. (…\arduino-1.0.6\libraries)
Burada taslak olarak kullanacağımız örnek “IRrcvDemo” örneği olacak.
/*
 * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
 * An IR detector/demodulator must be connected to the input RECV_PIN.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */

#include 

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
  delay(100);
}


IRremote kütüphanesinin içerisinde bulunan IRrcvDemo örneğinde basılan butonun sinyaline göre bir hex sayısının döndüğünü “Serial Monitor” üzerinde göreceğiz.
IR_example
Yapacağımız örnekte yukarıda bulunan sayılar sırası ile CH-,CH,CH+….” hex” karşılığıdır.

Arduino ile Kızılötesi Alıcı Kumanda Kontrolü Kodu

#include   // Kütüphane Eklendi

int RECV_PIN = 11;   // 11 pin VS1838B IN pini

IRrecv irrecv(RECV_PIN); // Alıcı Tanımlandı

decode_results results; // alıcıya gelen sinyalin 
                        // dijital karşılığı
void setup()
{
  Serial.begin(9600); // Ekrana yazmak için
                      // Seri haberleşme başlatıldı
  irrecv.enableIRIn(); // IR haberleşme başlatıldı.
  pinMode(2,OUTPUT);   // 2. ve 3. pindeki Led ayarlandı
  pinMode(3,OUTPUT);


}
void loop() {
  if (irrecv.decode(&results)) { // sinyal algılanırsa
   Serial.println(results.value, HEX); // ekrana hex karşılığını yaz
   
        if(results.value==0xFFA25D) // CH- ise 2. Led yansın
             digitalWrite(2,HIGH); 
       
          else if(results.value==0xFF629D) // CH ise 3. Led yansın
             digitalWrite(3,HIGH);
             
          else if(results.value==0xFFE21D){ // CH ise 2. ve 3. Led yansın
             digitalWrite(2,HIGH);
             digitalWrite(3,HIGH);
           }
           
          else {                       //Diğer butonlar ise Ledler sönsün
             digitalWrite(2,LOW);
           digitalWrite(3,LOW);
         }
       
    irrecv.resume();             // Yeni bir değer yeniden veri alınacak
  }
  delay(100);                  // Gelen sinyaller arasında karışıklık olmaması
                              // icin 100ms bekleniyor
}






6 yorum:

  1. Arduino ile Kızılötesi Alıcı Kumanda Kontrolü Kodunu upload ederken aşşağıdaki hatayı alıyorum?

    This report would have more information with
    "Show verbose output during compilation"
    enabled in File > Preferences.
    Arduino: 1.0.6 (Windows 7), Board: "Arduino Uno"
    sketch_feb23a.ino:1:42: error: #include expects "FILENAME" or
    sketch_feb23a:5: error: 'IRrecv' does not name a type
    sketch_feb23a:7: error: 'decode_results' does not name a type
    sketch_feb23a.ino: In function 'void setup()':
    sketch_feb23a:13: error: 'irrecv' was not declared in this scope
    sketch_feb23a.ino: In function 'void loop()':
    sketch_feb23a:20: error: 'irrecv' was not declared in this scope
    sketch_feb23a:20: error: 'results' was not declared in this scope

    YanıtlaSil
  2. IRremote kütüphanesini yüklemelisin

    YanıtlaSil
  3. IRremote kütüphanesini yüklemelisin

    YanıtlaSil
  4. 5V le gnd yeri değişik yaktım sizin yüzünüzden alıcıyı

    YanıtlaSil
  5. Bu yorum yazar tarafından silindi.

    YanıtlaSil
  6. #include " ????????.h " kütüphaneyi yükledikde , bu kısım eksik ....
    FILENAME hatasını oyüzden veriyor ....

    YanıtlaSil