back to top

Arduino Dersleri #13: Arduino IR Kumanda ile LED Kontrolü

Merhaba arkadaşlar. Bu dersimizde Arduino UNO kullanarak kızılötesi uzaktan kumanda uygulaması yapacağız.

Bir önceki yazımızda joystick ile servo motor kullanmıştık >>> Arduino Joystick İle Servo Motor Kontrolü

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:

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

Son Çıkan Yazılar

77 YORUMLAR

    • ya agalar biz bu işi çözemedik bi help atın. ilge abicimizin kodlarını çaldık, kodlar çalışmıyor. ilge abimiz de videoyu kaldırmış. devreyi düzgünce çalıştıran biri varsa yardım etsin pls. ilge abim sana da kırgınız

      • Ir kütüphanesini güncellemiş arduino. O yüzden bazı kodlar değişmiş. Hatta çoğu kod değişmiş. arduinonun githubından bakabilirsin neler değişmiş, nasıl değişmiş.

  1. Mete ben calıstırdım . yazının icerisinde “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ısmı okudun mu?

  2. Merhaba
    Ürünü aldım ancak arduino due ile çalıştıramadım. İlk başta kütüphane hata verdi ve due için kütüphane buldum ve derlemeyi başardım. Programı yüklüyorum ama hala çalışmıyor.

  3. hocam resimdeki gibi bağladığımda alıcı ısınmaya başladı bende ayrıca bacakların üstünde sol taraf d0 orta bacak GND sağ bacak VCC yazıyor bende buna göre bağladım şimdi d0 11 e gnd gnd ye vcc 5v a bağladım doğrumu bilgi verirseniz sevinirim

    • aynıs sorunu bende yaşadım devreyi ikinci defa kurduğumda alıcıya dokunamıyordum acaba bunun sebebi nedir ayrıca kumandayla servo motor kontrol etmeye çalışınca arduino kapanıyor bunun sebebini bilen varmı acaba

  4. AS timur kardes ındırdıgınız kutuphanenın zıpten cıkan “Arduino-IRremote-master” klasorunun adını sadece” IRremote ” olarak degıstırın ve o sekılde libraries e atın ben o sekılde calıstırdım programda yazılanla kutuphaneye atılan ısım aynı degıl o yuzden hata verıyor

  5. Simdi Hocam bu olayin en kolay yöntemini anlatmissiniz eyvallah yaratici bir program olmus ama diyelimki 1 numarali kumanda dügmesiyle bir ledi yakmak istiyoruz digitalwrite komutuyla yapiyo ama ayni butonla söndürmeye calissak kodumuzu nasil degistirebiliriz? Counter yöntemiyle denedim ama biyerde logik hatasi yapiyorum bana bu tek butondan acma kapama konusunu anlatabilirmisinz.

    • Öncelikle bool tipinde bir led_durum değişkeni tanımlayın. Varsayılan olarak LOW değerinde olsun. İstediğiniz butonun if’inde ise bu değişkenin değerini led_durum != led_durum; olarak tam tersine çevirin. Böylelikle tek buton ile aç-kapa işlemi yapabilirsiniz.

  6. Selamlar, evdeki televizyonun kumandasi mefta olunca bende aurdino ile kendi kumandami yapmaga karar verdim. Bizikisi eski bir LG televizyon, kumandasinin modülasyon ve kodlamasini bulma sansim var mi? bir suredir ariyorum ancak birsey bulamadim.

  7. Merhaba;
    Yaptığınız projedeki bütün adımları arduino yada uyguladım fakat kumandaya bastığımda çalışmıyor ve kütüphaneyi kurdum.

  8. Ben de çalışıyor ama sinyaller bazen bi gidiyor bi gitmiyor bunun sebebi ne olabilir yardımcı olabilirseniz çok mutlu olurum bi de zahmet olmaz ise biraz acil dönebilir misiniz

    • Tuşlara basılı tutmanız durumunda normalde gidenden farklı bir kod gidecektir. Sorununuz bundan kaynaklı olabilir. Kütüphane yanında gelen IRrecvDump örneklerini kullanarak gelen sinyalleri daha detaylı olarak analiz edebilirsiniz.

  9. merhaba.bir problemim var şuan renkleri karışık döndürdüğümde mesela while döngüsünde açıyorum buton 4e açıp başlatıyorum tekrar buton 4e bastığımda while döngüsünden çıkmasını istiyorum fakat while döngüsüne girince diğer hiçbir butonu algılamıyo kapanmıyorda.kod kısmı şu şekilde:::
    #include
    IRrecv irrecv(2);
    decode_results results ;
    #define BUTON1 0xFF30CF
    #define BUTON2 0xFF18E7
    #define BUTON3 0xFF7A85
    #define BUTON4 0xFF6897
    #define BUTON5 0xFF9867

    const int kir = 10;
    const int mavi = 12;
    const int yesil = 11;

    boolean durum=true;
    void setup (){

    pinMode (kir , OUTPUT );
    pinMode (mavi , OUTPUT );
    pinMode (yesil , OUTPUT );

    Serial.begin (9600);
    irrecv.enableIRIn();

    }
    void loop (){

    if (irrecv.decode(&results)){

    Serial.println(results.value, HEX);

    if(results.value == BUTON1 )

    digitalWrite(kir ,!digitalRead(kir));
    irrecv.resume();

    if(results.value == BUTON2 )

    digitalWrite(mavi ,!digitalRead(mavi));
    irrecv.resume();

    if(results.value == BUTON3 )

    digitalWrite(yesil ,!digitalRead(yesil));
    irrecv.resume();

    }

    while (results.value==BUTON4){

    digitalWrite(mavi,HIGH);
    digitalWrite(yesil,HIGH);

    delay(70);
    digitalWrite(mavi,LOW);
    delay(70);
    digitalWrite(kir,HIGH);
    digitalWrite(mavi,HIGH);
    delay(70);
    digitalWrite(kir,LOW);
    delay(70);
    digitalWrite(yesil,HIGH);
    delay(70);
    digitalWrite(yesil,LOW);
    delay(70);

    irrecv.resume();

    }
    while (results.value==BUTON5){
    digitalWrite(mavi,LOW);
    digitalWrite(kir,LOW);
    digitalWrite(yesil,LOW);
    irrecv.resume();
    }

    }

  10. tv kumandasından kodları elde edip mega klon ardunio kartta yükleme yaptım ve çalıştırdım ancak algılama mesafesi çok yakın ve geç algılıyor nasıl çözerim

  11. Bende kumanda seti aldım. Gelen set içerisinde 3 bacaklı alıcı sensör ve sensör kartı ayrı şekilde. Bunları lehimlemekmi lazım yoksa jumper kablolarla bağlantısını yapabilirmiyiz

  12. Merhabalar;
    Benim kumandam sizinkinden farklı, ama kodları karıştırarak 4 ledi istediğim zaman açıp kapata biliyorum. İlk önce 2. ve 4. led çalışmıştı, sonra kurcaladım ve 4 led çalışıyor.

    Yardımın için teşekkür ederiz.

  13. Kumandamı Dosya > örnekler > IRremote > IRrecvDemo yolunu takip ederek açtığım projeden hex kodlarını okutuyorum, ancak kumadanın aynı tuşları 3-5 sefer aynı kodu gösteriyor daha sonra başka bir kon gösteriyor;daha sonra eski koda geri dönüyor. bütün tuşlarda aynı sorun var. bir fikrinz var mı?

  14. kolay gelsin ben kumandayı kullanarak rgb led ile hangi rengi yaktırdıysam lcd ekranda “kırmızı yandı”,”yeşil yandı”,”mavi yandı ” yazmasını istiyorum ama bir türlü beceremedim lcd tek çalışıyor rgb led tek başına çalışıyor kumanda çalışıyor ama ikisini birlikte çalıştıramadım yardımcı olur musunuz
    kodlarım aşağıdaki gibi

    #include
    #include
    #include
    #include
    #include

    #define red 3
    #define mavi 4
    #define yesil 5
    #define kumanda 2

    #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
    IRrecv irrecv(kumanda);
    decode_results results;

    LiquidCrystal lcd(6,7,8,9,10,11);

    void setup() {
    lcd.begin(16,2);
    pinMode (red,OUTPUT);
    pinMode (mavi,OUTPUT);
    pinMode (yesil,OUTPUT);

    irrecv.enableIRIn();

    }

    void loop() {
    if (irrecv.decode(&results))
    {
    if (results.value == BUTON1)
    {
    digitalWrite(red, !digitalRead(red));
    if (digitalRead(red) == HIGH)
    {
    lcd.setCursor(0,0);
    lcd.print(“KIRMIZI yandi”);
    delay(500);
    lcd.clear();
    }
    else
    {
    lcd.print(“KIRMIZI sondu”);delay(500);
    lcd.clear();
    }
    }
    if (results.value == BUTON2)
    {
    digitalWrite(mavi, !digitalRead(mavi));
    if (digitalRead(mavi) == HIGH)
    {
    lcd.print(“mavi yandi”);delay(500);
    lcd.clear();
    }
    else
    {
    lcd.print(“mavi sondu”);delay(500);
    lcd.clear();
    }
    }
    if (results.value == BUTON3)
    {
    digitalWrite(yesil, !digitalRead(yesil));
    if (digitalRead(yesil) == HIGH)
    {
    lcd.print(“yesil yandi”);delay(500);
    lcd.clear();
    }
    else
    {
    lcd.print(“yesil sondu”);delay(500);
    lcd.clear();
    }
    }

    if (results.value == CH1)
    {
    digitalWrite(red, LOW);
    digitalWrite(mavi, LOW);
    digitalWrite(yesil, LOW);
    lcd.print(“Tum LED’ler sondu”);delay(500);
    lcd.clear();
    }
    if (results.value == CH2)
    {
    digitalWrite(red, HIGH);
    digitalWrite(mavi, HIGH);
    digitalWrite(yesil, HIGH);
    lcd.print(“Tum LED’ler YANDI”);delay(500);
    lcd.clear();
    }

    irrecv.resume();
    }
    }

  15. Merhaba
    Ben bu devreyi apartman girişindeki kapı otomatiğinde kullanacağım. Sizin tasarladığımız hali ile uyguladım gayet net çalışıyor.
    Fakat size bir sorum olacak kumandanın ilgili tuşuna bastığım süre kadar ledi yak, ilgili butondan elimi çektiğim an sön yapmak istiyorum. bunun için kodun hangi kısmına ve nasıl müdahale gerekiyor.
    Saygılar

  16. merhaba bi sorum olucak şimdi aklımda bir soru var denedim denedim bi türlü istediğim sonucu alamadım şimdi bu televizyonda sayılara basınca hemen neye bastığını algılayıp sonra birleştiriyor ya benimkide aynısı ama tek fark önce ok tuşuna basılacak sonra 2 sayı girmesi istenecek bunları birleştirip sayılara gerekli yerlerde kullanıcam bunun için bir kod örneği hazırlayabilirmisiniz acaba

  17. Hocam ben kontrol sayısını artırmak istedim 8 tane röle ayrı ayrı kontrol ediyor um fakat 5 yada 8 röle aynı anda çalıştığı zaman ardunio komut almıyor donuyor ayrıca son kodda değil sizin kodu fazlalastirip da denedim kütüphane den diye düşünüyorum ama bir türlü çözemedim.

  18. Merhabalar hocam.
    Bir türlü çözemedim 8 tane röle çalıştırmak istiyorum fakat 4 tane gayet sağlıklı çalışıyor 5. Rolede 1 konumda olduğunda ardunio donuyor sebebi ne olabilir 8 tane röle çalıştırınız mi hiç kodda sıkıntı olduğunu düşünmüyorum ardunio da değiştirdim fakat durum aynı kodu sizin kodları fazlalastirdim başka birşey eklemedim

  19. Hocam şifreli giriş yapmak istesek eprom a kumanda dan gelen değeri nasıl yazarız karşılaştırma yapıp şifre oluşturmak mümkün mü eprom a nasıl yazabilir im

  20. bir sorun var dediniz ama aslında untmuslar bu kodu yazarsanız calısacaktır NOT:kütüphaneyi eklemeyi unutmuşlar

    kod:

    #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();
    }
    }

  21. bir sorun var dediniz ama aslında untmuslar bu kodu yazarsanız calısacaktır NOT:kütüphaneyi eklemeyi unutmuşlar
    NOT 2:IRremote un basina

    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();
    }
    }

  22. Arskadaşlar çözümü buldum (akılca bi yöntem değil ama yinede çalııyor :D)
    Aşağıdaki linkten kütüphaneyi indirip kurun (eski versiyon kullanıyorum yenisine kafam basmıyor)
    Yine aşağıdaki kodu arduino da çalıştırın ve serial monitör ü çalıştırın.
    Normal olarak kumandanın tuşlarına basınca bastığınız butonun kodunu yazacaktır eğer sıkıntı varsa bilmiyorum.
    Buton kodlarını alaraktan bilgiyi işleyebilirisniz.

    Kod:
    #include

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

    void setup() {
    Serial.begin(9600);
    irrecv.enableIRIn();
    }
    void loop() {
    if (irrecv.decode( & results)) {
    Serial.println(results.value);
    irrecv.resume();
    }
    }

    Örnek kod (örnek proje):
    #include

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

    void setup() {
    Serial.begin(9600);
    irrecv.enableIRIn();
    }
    void loop() {
    if (irrecv.decode( & results)) {
    Serial.println(results.value);
    if(results.value == 16753245){
    Serial.println(“1 oldu”);
    }
    irrecv.resume();
    }
    }
    Kütüphane linki:
    https://downloads.arduino.cc/libraries/github.com/z3t0/IRremote-2.5.0.zip

  23. Merhabalar,

    Kumandadan gelen hex kodları aynı tuşa bastığımda farklı hex kodları geliyor nedendir acaba?

    baudrate i değiştirdim olmadı. viessmann klima kumandası kullanıyorum.

    İyi çalışmalar.

    • Merhaba.

      Bunu sürekli gözlemleyiniz, mutlaka bir yerde aynı değerlere sahip olacaktır. Bu değerlerden birine ait olursa diye bir şart tanımlarsanız bu projeyi rahatlıkla yapabilirsiniz.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz