Arduino Uzaktan Kızılötesi IR Infrared Kumanda İle LED Kontrol

Yazıda Neler Var? gizleKızılötesi Kumanda Çalışma Mantığı ve KullanımıKızılötesi (IR) Sensör Nedir?Uzaktan Kumanda ile LED Kontrol Devresi

Kızılötesi Kumanda Çalışma Mantığı ve Kullanımı

Kızılötesi kumandalar, günlük kullandığımız çoğu elektronik alette sık sık kullandığımız cihazlardır. Neden Arduino’da da kullanmayalım? 🙂 Çalışma prensibi şu şekildedir: kumanda üzerinde bir kızılötesi (infrared, ir) LED bulunur. Bu LED, kumanda üzerindeki herhangi bir tuşa bastığımızda önceden belirlenmiş bir kod verecek şekilde belirli bir frekansta yanıp söner. Çoğu kumanda için bu frekans 38 kHz’tir. 38 kHz’lik taşıyıcı sinyale her bir tuş için farklı bir kod oluşturacak şekilde modülasyon uygulanır. Her marka için farklı modülasyon ve kodlama teknikleri mevcuttur. Projede kullandığımız 38 kHz kızılötesi alıcı, aldığı sinyali demodüle ederek Arduino’ya doğrudan basılan buton ile ilgili kodu göndermektedir. Bu sayede farklı marka ve model kumandaları 38 kHz taşıyıcı sinyale sahip olduğu sürece bu alıcı ile kullanabilmekteyiz.

The_Phillips_RC5_Protocol_11

Kızılötesi (IR) Sensör Nedir?

Kızılötesi (infra-red) sensörler ortamdaki karanlık/aydınlık farkını algılama ve mesafe algılama amacıyla kullanılan sensörlerdir. Kızılötesi sensörlerin yapılarında bir LED ve bu LED’in yansıdığı ışığı algılayan bir foto komponent bulunur. Bu komponent fotodiyot, fototransistör gibi devre elemanlarından biri olur. Kızılötesi sensörün hassasiyeti kontrol edilebilir. Ayarlanan hassasiyete göre yapısında bulunan LED, ayarlanan dalga boyu büyüklüğünde bir ışık üretir. Bu ışığın yansıması, sensörün yapısında bulunan foto komponente geri döndüğünde sensör algılama işlemini gerçekleştirir.

Kızılötesi sensör ve diğer tüm sensörler için detaylı bilgiye buradan ulaşabilirsiniz.

Uzaktan Kumanda ile LED Kontrol Devresi

Gerekli malzemeler:

Projedeki Malzemeler Bu Sette. Şimdi İncele >

Bizim kullanacağımız setteki kumandanın tüm butonlarına ait kodlar Arduino’ya yükleyeceğimiz program kodunda tanımlanmıştır. Bu sayede kit ile beraber gelen kumandadaki tüm butonlara birer işlev atamamız mümkün olur. Devremizin bağlantı şeması şu şekildedir:

IR Kumanda ile LED Kontrol Devresi

Kızılötesi alıcıyı kullanabilmemiz için, Arduino yazılımına Arduino-IRremote kütüphanesini yüklememiz gereklidir. Bu kütüphaneyi indirdikten sonra C:Program Files (x86)Arduinolibraries veya C:Program FilesArduinolibraries klasörünün altına “IRremote” ismiyle kaydetmemiz gereklidir. Kütüphaneyi yükledikten sonra aşağıdaki kodu Arduino’muza yüklüyoruz:

#include 

int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;

#define CH1 0xFFA25D
#define CH 0xFF629D
#define CH2 0xFFE21D
#define PREV 0xFF22DD
#define NEXT 0xFF02FD
#define PLAYPAUSE 0xFFC23D
#define VOL1 0xFFE01F
#define VOL2 0xFFA857
#define EQ 0xFF906F
#define BUTON0 0xFF6897
#define BUTON100 0xFF9867
#define BUTON200 0xFFB04F
#define BUTON1 0xFF30CF
#define BUTON2 0xFF18E7
#define BUTON3 0xFF7A85
#define BUTON4 0xFF10EF
#define BUTON5 0xFF38C7
#define BUTON6 0xFF5AA5
#define BUTON7 0xFF42BD
#define BUTON8 0xFF4AB5
#define BUTON9 0xFF52AD

int led1 = 8;
int led2 = 9;
int led3 = 10;
int led4 = 11;

void setup()
{
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn();
}
void loop() {

  if (irrecv.decode(&results))
  {
    if (results.value == BUTON1)
    {
      digitalWrite(led1, !digitalRead(led1));
      if (digitalRead(led1) == HIGH)
      {
        Serial.println("LED 1 yandi");
      }
      else
      {
        Serial.println("LED 1 sondu");
      }
    }
    if (results.value == BUTON2)
    {
      digitalWrite(led2, !digitalRead(led2));
      if (digitalRead(led2) == HIGH)
      {
        Serial.println("LED 2 yandi");
      }
      else
      {
        Serial.println("LED 2 sondu");
      }
    }
    if (results.value == BUTON3)
    {
      digitalWrite(led3, !digitalRead(led3));
      if (digitalRead(led3) == HIGH)
      {
        Serial.println("LED 3 yandi");
      }
      else
      {
        Serial.println("LED 3 sondu");
      }
    }
    if (results.value == BUTON4)
    {
      digitalWrite(led4, !digitalRead(led4));
      if (digitalRead(led4) == HIGH)
      {
        Serial.println("LED 4 yandi");
      }
      else
      {
        Serial.println("LED 4 sondu");
      }
    }
    if (results.value == BUTON0)
    {
      digitalWrite(led1, LOW);
      digitalWrite(led2, LOW);
      digitalWrite(led3, LOW);
      digitalWrite(led4, LOW);
      Serial.println("Tum LED'ler sondu");
    }
    if (results.value == BUTON5)
    {
      digitalWrite(led1, HIGH);
      digitalWrite(led2, HIGH);
      digitalWrite(led3, HIGH);
      digitalWrite(led4, HIGH);
      Serial.println("Tum LED'ler yandi");
    }
    irrecv.resume();
  }
}

Bu koda göre, kumandamız üzerindeki 1, 2, 3 ve 4 numaralı butonlar sırasıyla 8, 9, 10 ve 11 numaralı dijital pinlere bağlı olan LED’leri yakıp söndürecektir. 0 tümünü söndürür ve 5 tümünü yakar. Ayrıca seri port ekranını açarsak, butona bastığımızda LED’in değişimini bu ekrandaki ifadelerden de görebiliriz. Sizler de kodun baş kısmındaki #define ile tanımlanan diğer buton kodlarını kullanarak farklı işlevler gerçekleştirecek şekilde programlama yapabilirsiniz.

Eğer kit dahilinde gelen kumanda yerine başka bir kumanda kullanmak istiyorsanız (veya sadece alıcıdan temin ettiyseniz), Arduino programından Dosya>Örnekler>IRremote>IRrecvDump örnek kodunu kullanarak mevcut kumandanızın tuşlarına ait hex kodları tespit edebilir ve bu kodları kullanabilirsiniz.

https://arduinohocam.com/

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir