Arduino ile IR Kumanda Kullanımı (LED Kontrolü)

Bu uygulamamızda Arduino kartımıza bağladığımız IR alıcı sensörünü okuyup, kumandadan gelen veriye göre LED’lerimizin yanmasını ve sönmesini sağlayacağız. Bu uygulamada kullanacağımız malzemelerimiz;


  • Arduino UNO

  • 5mm Kırmızı LED

  • 220R veya 330R Direnç

  • IR Alıcı-Verici Kumanda Seti

  • Jumper Kablolar (E-E,D-E)

  • Breadboard


Devremizi bu şemaya göre kurup bağlantılarımızı yapıyoruz.


Kızılötesi kumandalar etrafta kullanılan çoğu cihazın kumandasıdır. Kızılötesi kumandalar üzerinde bir tane IR LED bulunur. Bu LED kumanda da bulunan herhangi bir tuşa basıldığı zaman belirli bir frekansta yanıp söner ve bir kod gönderir. Uygulamada kullanılan alıcıyla farklı model kumandaları da kullanabilirsiniz.


Kumanda üzerindeki bütün tuşların kodu aşağıda tanımlanmıştır, kumanda üzerindeki bütün tuşlara motor sürmek, LED simülasyonları gibi farklı işlevler atanabilir. IR Alıcı sensörü kullanabilmek için IRremote kütüphanesini Arduino’ya eklemeniz gerekmektedir.

!digitalRead(LED1) komutu LED1in tanımlı olduğu pini okur ve LED1 HIGH ise LOW, LOW ise HIGH olarak ayarlar.


Devre bağlantısını yaptıktan sonra kodlama kısmına geçebiliriz.


#include <IRremote.h> //IR Sensor için gerekli kütüphane eklendi.
 
int RECV_PIN = 8; //IR Sensor pini tanımlandı
IRrecv irrecv(RECV_PIN);
decode_results results;
 
#define CH1 0xFFA25D // IR Kumanda üzerinde bulunan tuşlara ait kodlar
#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 TUS0 0xFF6897
#define TUS100 0xFF9867
#define TUS200 0xFFB04F
#define TUS1 0xFF30CF
#define TUS2 0xFF18E7
#define TUS3 0xFF7A85
#define TUS4 0xFF10EF
#define TUS5 0xFF38C7
#define TUS6 0xFF5AA5
#define TUS7 0xFF42BD
#define TUS8 0xFF4AB5
#define TUS9 0xFF52AD
 
#define LED1 2 //Ledler tanımlandı.
#define LED2 3
#define LED3 4
#define LED4 5
#define LED5 6
#define LED6 7
 
 
void setup()
{
 pinMode(LED1, OUTPUT); //LED'ler çıkış olarak tanımlandı.
 pinMode(LED2, OUTPUT);
 pinMode(LED3, OUTPUT);
 pinMode(LED4, OUTPUT);
 pinMode(LED5, OUTPUT);
 pinMode(LED6, OUTPUT);
 digitalWrite(LED1,LOW); //LED'ler başlangıçta 'LOW' yapıldı.
 digitalWrite(LED2,LOW);
 digitalWrite(LED3,LOW);
 digitalWrite(LED4,LOW);
 digitalWrite(LED5,LOW);
 digitalWrite(LED6,LOW);
 
 irrecv.enableIRIn(); //IR sensörü aktif hale getirdik.
}
void loop() {
 
 if (irrecv.decode(&results))
 {
 if (results.value == TUS1) //Kumanda üzerindeki '1' tuşuna basıldığı zaman LED1 yanacak tekrar basıldığı zaman sönecek.
 {digitalWrite(LED1, !digitalRead(LED1));}   
 if (results.value == TUS2) //Kumanda üzerindeki '2' tuşuna basıldığı zaman LED2 yanacak tekrar basıldığı zaman sönecek.
 {digitalWrite(LED2, !digitalRead(LED2));}
 
 if (results.value == TUS3) //Kumanda üzerindeki '3' tuşuna basıldığı zaman LED3 yanacak tekrar basıldığı zaman sönecek.
 {digitalWrite(LED3, !digitalRead(LED3));}
 
 if (results.value == TUS4) //Kumanda üzerindeki '4' tuşuna basıldığı zaman LED4 yanacak tekrar basıldığı zaman sönecek.
 {digitalWrite(LED4, !digitalRead(LED4));}
 
 if (results.value == TUS5) //Kumanda üzerindeki '5' tuşuna basıldığı zaman LED5 yanacak tekrar basıldığı zaman sönecek.
 {digitalWrite(LED5, !digitalRead(LED5));}
 
 if (results.value == TUS6) //Kumanda üzerindeki '6' tuşuna basıldığı zaman LED6 yanacak tekrar basıldığı zaman sönecek.
 {digitalWrite(LED6, !digitalRead(LED6));}
 
 
 
 
 
 if (results.value == PLAYPAUSE) //Kumanda üzerindeki 'PLAY/PAUSE' tuşuna basıldığı zaman LED'ler yanacak tekrar basıldığı zaman sönecek.
 {
 
 digitalWrite(LED1, !digitalRead(LED1));
 digitalWrite(LED2, !digitalRead(LED2));
 digitalWrite(LED3, !digitalRead(LED3));
 digitalWrite(LED4, !digitalRead(LED4));
 digitalWrite(LED5, !digitalRead(LED5));
 digitalWrite(LED6, !digitalRead(LED6));
 
 }
 irrecv.resume();
 }
}

Eğer farklı bir kumanda kullanacaksanız Arduino’da ;

Dosya - Örnekler – IRremote - IRrecvDump örnek kodu kullanarak kumandanızın tuşlarına ait kodları seri monitörden görebilirsiniz.



Projenizi yaparken karşılaştığınız problemleri yorumlar kısmında belirtirseniz ekibimiz en kısa sürede size yardımcı olacaktır





Son Paylaşımlar