problema con ricevitore IR TSOP 1738

Ragazzi, avrei bisogno del vostro aiuto per capire un comportamento anomalo (per me) del sensore IR TSOP1738. Probabilmente ho scritto male il programma.

utilizzando il TSOP 1738 ho decodificato 2 segnali del mio telecomando DVD (marca Philips): premendo il tasto 6 il sensore fa comparire sulla finestra seriale di arduino i valori 406 o 10406 (tenendo premuto il tasto), se premo il tasto 4 fa comparire sulla finestra di arduino i valori 404 o 10404.

io ho fatto un programmino semplice per testare il funzionamento: premendo 6 dovrebbe accendere un LED e premendo 4 dovrebbe spegnere il LED.

l’anomalia che trovo è che quando legge 10406 il LED lampeggia (nella mia intenzione non dovrebbe lampeggiare), quando legge 406 il LED rimane giustamente acceso. Ho sbagliato qualcosa nell’istruzione logica OR?

#include <IRremote.h> // use the library
int receiver = 11; // pin 1 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;


void setup()
{
  Serial.begin(9600); // for serial monitor output
  irrecv.enableIRIn(); // Start the receiver
  pinMode(9, OUTPUT); // Pin 9 output
}
void loop()
{
  if (irrecv.decode(&results)) // have we received an IR signal?
  {
    Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
    irrecv.resume();// receive the next value
  }
 
  if ( results.value == 0x406 ||  results.value == 0x10406 ){ //tasto 6 sul telecomando
    digitalWrite(9, HIGH);   // set the LED on
  delay(500); 
  } 
 if ( results.value == 0x404 ||  results.value == 0x10406 ){ //tasto 4 sul telecomando
    digitalWrite(9, LOW);   // set the LED 0ff
  delay(500); 
  }  
}

if ( results.value == 0x406 || results.value == 0x10406 ){ //tasto 6 sul telecomando digitalWrite(9, HIGH); // set the LED on delay(500); } if ( results.value == 0x404 || results.value == 0x10406) Qui devi cambiare con 0x10404 { //tasto 4 sul telecomando digitalWrite(9, LOW); // set the LED 0ff delay(500); } }

Il problema credo sia questo, accendi il led con il tasto premuto 10406 trascorrono 500ms e poi siccome continui a tenere premuto il tasto 10406 lo rispegni per altri 500ms e tutto questo a loop. Il led lampeggia con una frequenza di 1 Hz

grazie per la segnalazione!

ho tolto anche l'istruzione delay(500) perchè in questo modo c'è uno switch immediato del LED al segnale dal telecomando: ora funziona tutto perfettamente!

Ciao, non so se può esserti utile perchè in questo link parla di un sensore infrarossi PNA della panasonic, però può aiutarti probabilmente:

http://www.ladyada.net/learn/sensors/ir.html#testing_your_ir_detector

Ciao,

Fab.