Arduino'da kumandada IR sensör her defasında farklı kod algılıyor

Salih Gürbüz

Hectopat
Katılım
3 Ağustos 2020
Mesajlar
2.639
Makaleler
2
Çözümler
8
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar 3 gündür IR sensör ile bir proje yapmaya çalışıyorum fakat bir türlü çözemediğim bir sorun var. Kodumun ve devremin doğru olduğuna emin olduğum halde devre çalışmıyor (IR sonsör çalışıyor fakat LED'ler yanmıyor). Kodlarla yapmak istediğim şey kumandadan bazı tuşlara basınca bazı LED'lerin yanması bazılarının sönmesi.

Kodlarımdan ve devremden emin olduğum için yanlış kütüphaneyi mi kurdum diye düşündüm. Tüm videolarda aynı link veriliyor ve bende bu linkten kütüphaneyi indirmeme rağmen videolardaki hocaların kumandanın tuşlarının kodunu öğrenmek için kullandığı ve örnek projelerden açtığı "IRrecvdemo" örnek projesi ben de yoktu. Yani sorun kütüphaneden dolayı mı bilmiyorum. 2 farklı bilgisayarda denedim ikisinde de olmuyor.

Son olarak projeyi çalıştırdığımda seri ekranda önce bir hata mesajı sonrada kumandadan aynı tuşa basmama rağmen farklı kodlar çıkıyor. Yardımcı olursanız çok sevinirim :). Şimdiden teşekkürler.

Hata mesajı ;
The function decode(&results)) is deprecated and may not work as expected! Just use decode() without a parameter and IrReceiver.decodedIRData.<fieldname> .

Kodlarım:
Kod:
#include <IRremote.h>
int sari=3,kirmizi=4,yesil=5,beyaz=6,ses=7;
int IRdatapin=2;
 
IRrecv IR0(IRdatapin);
decode_results results;
 
#define tusguc 3772793023 // bu kodları bir videodan aldım.
#define tus0 3772811383
#define tus1 3772784863
#define tus2 3772817503
#define tus3 3772801183
#define tus4 3772780783
#define tus5 3772813423
 
void setup() {
Serial.begin(9600);
pinMode(sari,OUTPUT);  
pinMode(kirmizi,OUTPUT);
pinMode(yesil,OUTPUT);
pinMode(beyaz,OUTPUT);
pinMode(ses,OUTPUT);
IR0.enableIRIn();
}
 
void loop() {
if(IR0.decode(&results))
{
  Serial.println(results.value);
  IR0.resume();
  if(results.value==tusguc)
  {
    digitalWrite(sari,HIGH);
    digitalWrite(kirmizi,HIGH);
    digitalWrite(yesil,HIGH);
    digitalWrite(beyaz,HIGH);
  }
  else if(results.value==tus0)
  {
    digitalWrite(sari,LOW);
    digitalWrite(kirmizi,LOW);
    digitalWrite(yesil,LOW);
    digitalWrite(beyaz,LOW);
  }
  else if(results.value==tus1)
  {
    digitalWrite(sari,!digitalRead(sari));
    digitalWrite(kirmizi,LOW);
    digitalWrite(yesil,LOW);
    digitalWrite(beyaz,LOW);
  }
  else if(results.value==tus2)
  {
    digitalWrite(sari,LOW);
    digitalWrite(kirmizi,!digitalRead(kirmizi));
    digitalWrite(yesil,LOW);
    digitalWrite(beyaz,LOW);
  }
  else if(results.value==tus3)
  {
    digitalWrite(sari,LOW);
    digitalWrite(kirmizi,LOW);
    digitalWrite(yesil,!digitalRead(yesil));
    digitalWrite(beyaz,LOW);
  }
  else if(results.value==tus4)
  {
    digitalWrite(sari,LOW);
    digitalWrite(kirmizi,LOW);
    digitalWrite(yesil,LOW);
    digitalWrite(beyaz,!digitalRead(beyaz));
  }
  else if(results.value==tus5)
  {
    digitalWrite(ses,!digitalRead(ses));
  }
}
delay(500); 
}
hata mesajı ;
The function decode(&results)) is deprecated and may not work as expected! Just use decode() without a parameter and IrReceiver.decodedIRData.<fieldname> .

Kodlarım ;
#include <IRremote.h>
int sari=3,kirmizi=4,yesil=5,beyaz=6,ses=7;
int IRdatapin=2;
 
IRrecv IR0(IRdatapin);
decode_results results;
 
#define tusguc 3772793023 // bu kodları bir videodan aldım.
#define tus0 3772811383
#define tus1 3772784863
#define tus2 3772817503
#define tus3 3772801183
#define tus4 3772780783
#define tus5 3772813423
 
void setup() {
Serial.begin(9600);
pinMode(sari,OUTPUT);  
pinMode(kirmizi,OUTPUT);
pinMode(yesil,OUTPUT);
pinMode(beyaz,OUTPUT);
pinMode(ses,OUTPUT);
IR0.enableIRIn();
}
 
void loop() {
if(IR0.decode(&results))
{
  Serial.println(results.value);
  IR0.resume();
  if(results.value==tusguc)
  {
    digitalWrite(sari,HIGH);
    digitalWrite(kirmizi,HIGH);
    digitalWrite(yesil,HIGH);
    digitalWrite(beyaz,HIGH);
  }
  else if(results.value==tus0)
  {
    digitalWrite(sari,LOW);
    digitalWrite(kirmizi,LOW);
    digitalWrite(yesil,LOW);
    digitalWrite(beyaz,LOW);
  }
  else if(results.value==tus1)
  {
    digitalWrite(sari,!digitalRead(sari));
    digitalWrite(kirmizi,LOW);
    digitalWrite(yesil,LOW);
    digitalWrite(beyaz,LOW);
  }
  else if(results.value==tus2)
  {
    digitalWrite(sari,LOW);
    digitalWrite(kirmizi,!digitalRead(kirmizi));
    digitalWrite(yesil,LOW);
    digitalWrite(beyaz,LOW);
  }
  else if(results.value==tus3)
  {
    digitalWrite(sari,LOW);
    digitalWrite(kirmizi,LOW);
    digitalWrite(yesil,!digitalRead(yesil));
    digitalWrite(beyaz,LOW);
  }
  else if(results.value==tus4)
  {
    digitalWrite(sari,LOW);
    digitalWrite(kirmizi,LOW);
    digitalWrite(yesil,LOW);
    digitalWrite(beyaz,!digitalRead(beyaz));
  }
  else if(results.value==tus5)
  {
    digitalWrite(ses,!digitalRead(ses));
  }
}
delay(500); 
}
 
Basılı tuttuğunu süreye göre vs sayılar değişiyor. Ona dikkat ederek tuşlara basın. Ben de IR araba yaptım, aynı sorunla uğraşmıştım.
 
Basılı tuttuğunu süreye göre vs sayılar değişiyor. Ona dikkat ederek tuşlara basın. Ben de ır araba yaptım, aynı sorunla uğraşmıştım.

Hocam her zaman farklı sayılar gösteriyor. Hata alıyordum onu çözdüm, artık hata almıyorum ama hala bir tuşa bastığım zaman farklı kodlar alıyorum. Yardımcı olursanız çok sevinirim.

Arkadaşlar bu tür konulardan anlayan kişileri buraya etiketleyebilirsiniz.
@Çağan Çelik hocam yardımcı olursanız sevinirim :)
 
Son düzenleme:

Geri
Yukarı