Problema ricezione segnali con TSOP 4838 38Khz

Ciao a tutti

Volevo leggere il segnale dal telecomando della mia stufa idro a pellet per creare una centralina di gestione con Arduino,non potendo interfacciarmi con la scheda direttamente volevo sfruttare il segnale del telecomando per comandarla con arduino.
Ho acquistato il sensore TSOP 4838 e usando il codice:

#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
 Serial.begin(9600);
 irrecv.enableIRIn(); // Start the receiver
}
void loop() {
 if (irrecv.decode(&results)) {
 Serial.println(results.value, HEX);
 irrecv.resume(); // Receive the next value
 }
}

Riesco a leggere i segnali trasmessi dal telecomando.

Il problema è che mentre se provo con il telecomado TV ad esempio ho questo risultato:
2345543 Accensione
4567864 Spegnimento
2345543 Accensione
4567864 Spegnimento
2345543 Accensione
4567864 Spegnimento
2345543 Accensione
4567864 Spegnimento
ecc..
mentre con il telecomando della stufa ho questo risultato:

7FCBC72F accensione
AB16A642 spegnimento
48CB2BFF accensione
962164AA spegnimento
A391F3F9 accensione
4D9E5E12 spegnimento
42E1903E accensione
4D9E5E12 spegnimento
42E1903E accensione
BDF8099 spegnimento
5690BFC7 accensione

Non capisco perchè non ho sempre lo stesso valore per lo stesso comando,come mi aspettavo e come riscontro nella TV o in altri telecomandi(decoder,lettore,ecc)

Ogni idea o suggerimento è ben accetto.

Grazie a tutti.

Saluti

Ciao a tutti
nel frattempo ho fatto delle prove anche con il RAW ma non riesco a capire il perchè il codice cambia da una volta all'altra.
Esempio:

ON
1
For IR Scope: 
+1450 -200 +1500 -650 +600 -650 +1500 -150 +1500 -200 +1450 -250 +1400 -250 +1400 -700 +550 -700 +1350 -350 +1250 -450 +1250 -800 +450 -1250 +400 -1250 +450 -1200 +450 -1250 +400 -1250 +450 -1250 +400 -1250 +450 
For Arduino sketch: 
unsigned int raw[40] = 
{1450,200,1500,650,600,650,1500,150,1500,200,1450,250,1400,250,1400,700,550,700,1350,350,1250,450,1250,800,450,1250,400,1250,450,1200,450,1250,400,1250,450,1250,400,1250,450,};
irsend.sendRaw(raw,40,38);
OFF
2
For IR Scope: 
+1500 -150 +1500 -650 +600 -650 +1450 -200 +1500 -200 +1400 -250 +1450 -200 +1450 -250 +1350 -750 +450 -1200 +500 -1200 +450 -1200 +450 -1250 +400 -1250 +450 -1250 +400 -1250 +400 -1250 +400 -1300 +400 -1250 +400 
For Arduino sketch: 
unsigned int raw[40] = 
{1500,150,1500,650,600,650,1450,200,1500,200,1400,250,1450,200,1450,250,1350,750,450,1200,500,1200,450,1200,450,1250,400,1250,450,1250,400,1250,400,1250,400,1300,400,1250,400,};
irsend.sendRaw(raw,40,38);
ON
3
For IR Scope: 
+1550 -150 +1550 -550 +650 -600 +1500 -150 +1500 -150 +1500 -200 +1400 -300 +1350 -750 +450 -800 +1250 -400 +1300 -400 +1250 -850 +400 -1250 +400 -1300 +400 -1250 +400 -1300 +400 -1250 +400 -1250 +400 -1250 +450 
For Arduino sketch: 
unsigned int raw[40] = 
{1550,150,1550,550,650,600,1500,150,1500,150,1500,200,1400,300,1350,750,450,800,1250,400,1300,400,1250,850,400,1250,400,1300,400,1250,400,1300,400,1250,400,1250,400,1250,450,};
irsend.sendRaw(raw,40,38);
OFF
4
For IR Scope: 
+1500 -150 +1500 -600 +650 -600 +1500 -150 +1500 -200 +1450 -200 +1450 -250 +1300 -400 +1250 -850 +400 -1250 +450 -1200 +450 -1250 +400 -1250 +400-1300 +400 -1250 +400 -1250 +400 -1300 +400 -1250 +400 -1250 +450 
For Arduino sketch: 
unsigned int raw[40] = {1500,150,1500,600,650,600,1500,150,1500,200,1450,200,1450,250,1300,400,1250,850,400,1250,450,1200,450,1250,400,1250,400,1300,400,1250,400,1250,400,1300,400,1250,400,1250,450,};
irsend.sendRaw(raw,40,38);
ON
5
For IR Scope: 
+1500 -200 +1400 -650 +700 -600 +1500 -150 +1400 -250 +1500 -200 +1450 -200 +1400 -700 +500 -750 +1350 -350 +1300 -350 +1250 -850 +400 -1300 +400-1250 +400 -1250 +450 -1250 +400 -1250 +400 -1250 +450 -1250 +400 
For Arduino sketch: 
unsigned int raw[40] =
{1500,200,1400,650,700,600,1500,150,1400,250,1500,200,1450,200,1400,700,500,750,1350,350,1300,350,1250,850,400,1300,400,1250,400,1250,450,1250,400,1250,400,1250,450,1250,400,};
irsend.sendRaw(raw,40,38);

No riesco a capire perche ogni comando varia il codice.
Dovrebbe essere un codice per "on" e uno per "off" non variare ogni volta....
Può essere un problema hardware?
Ho provato con 2 sensori diversi ma si comporta allo stesso modo.

Saluti

semplice, il codice cambia veramente ad ogni invio. si chiama rolling code, serve a due cose, una su un sistema ad esempio di antifurto un ladro non puo- clonare il telecomando. Due, su una cosa come una stufa il proprietario non puo- farsi un duplicato con pochi soldi, costringendolo a comprare il telecomando originale :slight_smile:

Per i telecomandi antifurto,cancelli,centralizzata auto lo sapevo ma per una stufa......
Anche se non capisco come li interpreta la stufa se sparati a caso,mi pareva che il continuo cambio di codice avvenisse quando il ricevitore confermava di aver ricevuto il primo,mentre quì il telecomando lo punto solo al sensore di arduino,la stufa è fisicamente a 15km.
Peccato speravo di riuscirci,ero fiducioso di poter fare qualcosa.
Grazie comunque per la risposta.
Saluti
Giancarlo

Non è che magari trasmette anche la temperatura ambiente o qualche altra variabile? Un po come fanno i telecomandi dei climatizzatori...

la mia del rolling code e' solo un ipotesi, effettivamente il ricevitore dovrebbe dare il consenso a variare il codice, altrimenti come fa a riconoscere il comando se uno lo preme a distanza ?
Pero' sul discroso temperatura cosa intendi ? dovrebbe spedire la temperatura da impostare, e quindi sempre la stessa, mica spedisce la temperatura della stanza ? non avrebbe senso