Problema codici con rilevatore ir

Ciao, vorrei comandare una striscia led con un telecomando di casa. Ho quindi collegato un tsop1738 al pin 13 di arduino e caricato lo sketch base per leggere i valori tramite seriale

#include <IRremote.h>
 
int RECV_PIN = 13;
 
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
  }
}

Il problema è che con alcuni telecomandi fuonziona perfettamente, mentre con altri (tipo con un telecomando samsung o onkyo) alla pressione di uno stesso tasto il valore cambia di volta in volta.
E' un problema risolvibile in qualche modo?

Telecomandi normali non dovrebbero avere comportamenti strani, telecomandi particolari sono quelli dei condizionatori o di sky ad esempio.
Però i telecomandi tv, quando tieni premuto lo stesso tasto, possono avere 2 tipi di comportamento:

  1. ritrasmette sempre lo stesso codice
  2. la prima volta trasmette il codice ma poi trasmette di continuo 0xFFFFFF finchè tieni premuto
    Almeno x la mia esperienza.

nid69ita:
Telecomandi normali non dovrebbero avere comportamenti strani, telecomandi particolari sono quelli dei condizionatori o di sky ad esempio.

Condizionatori si, quelli di Sky no, si possono intercettare ma sono un protocollo specifico (cercare nel forum il mio recente post sull'argomento con tutti i codici per MySkyHD).

Però i telecomandi tv, quando tieni premuto lo stesso tasto, possono avere 2 tipi di comportamento:

  1. ritrasmette sempre lo stesso codice
  2. la prima volta trasmette il codice ma poi trasmette di continuo 0xFFFFFF finchè tieni premuto
    Almeno x la mia esperienza.

Confermo, ma nella stragrande maggioranza dei casi è la 2, ossia dopo il primo impulso con il codice del tasto premuto mandano 0xFFFFFF che indica "ripetizione dell'ultimo comando".

davide12:
Il problema è che con alcuni telecomandi fuonziona perfettamente, mentre con altri (tipo con un telecomando samsung o onkyo) alla pressione di uno stesso tasto il valore cambia di volta in volta.
E' un problema risolvibile in qualche modo?

Dipende da qual è il problema. Potrebbe essere un problema di codifiche non standard (o quantomeno non comprese nella libreria IRremote) oppure di frequenza (tu hai un TSOP1738 che significa 38kHz di portante).

La prima cosa che puoi fare è NON usare quel programma troppo semplificato, ma usare il programmino IRrecvDump presente negli esempi. Quello ti dice la codifica rilevata, ed eventualmente i codici RAW (banalmente i tempi di ogni bit ricevuto) in caso di protocollo sconosciuto.
Se ci posti l'output di quel programma possiamo darti qualche informazione, senza questo ci serve la sfera di cristallo :wink:

Vi ringrazio per l'aiuto, ho fatto delle prove con il codice IRrecvDump e premendo una volta lo stesso tasto leggo lo stesso codice se lo ripremo più volte, cioè così:

Decoded NEC: 4BB6D02F (32 bits)
Raw (68): 8850 -4450 600 -550 550 -1650 550 -550 600 -550 550 -1650 550 -550 550 -1700 550 -1650 550 -1650 550 -550 550 -1650 600 -1650 550 -550 550 -1700 550 -1650 550 -550 550 -1650 550 -1650 600 -550 550 -1650 550 -550 600 -550 550 -550 550 -550 550 -550 550 -550 550 -1650 600 -500 600 -1650 550 -1650 600 -1650 550 -1650 550 
4BB6D02F
Decoded NEC: 4BB6D02F (32 bits)
Raw (68): 8850 -4450 600 -550 550 -1650 550 -550 600 -550 550 -1650 550 -550 550 -1700 550 -1650 550 -1650 550 -550 550 -1650 600 -1650 550 -550 550 -1700 550 -1650 550 -550 550 -1650 550 -1650 600 -550 550 -1650 550 -550 600 -550 550 -550 550 -550 550 -550 550 -550 550 -1650 600 -500 600 -1650 550 -1650 600 -1650 550 -1650 550 
4BB6D02F
Decoded NEC: 4BB6D02F (32 bits)
Raw (68): 8850 -4450 600 -550 550 -1650 550 -550 600 -550 550 -1650 550 -550 550 -1700 550 -1650 550 -1650 550 -550 550 -1650 600 -1650 550 -550 550 -1700 550 -1650 550 -550 550 -1650 550 -1650 600 -550 550 -1650 550 -550 600 -550 550 -550 550 -550 550 -550 550 -550 550 -1650 600 -500 600 -1650 550 -1650 600 -1650 550 -1650 550 
4BB6D02F
Decoded NEC: 4BB6D02F (32 bits)
Raw (68): 8850 -4450 600 -550 550 -1650 550 -550 600 -550 550 -1650 550 -550 550 -1700 550 -1650 550 -1650 550 -550 550 -1650 600 -1650 550 -550 550 -1700 550 -1650 550 -550 550 -1650 550 -1650 600 -550 550 -1650 550 -550 600 -550 550 -550 550 -550 550 -550 550 -550 550 -1650 600 -500 600 -1650 550 -1650 600 -1650 550 -1650 550 
4BB6D02F

Oppure sempre lo stesso tasto premuto allo stesso modo leggo questo:

Decoded NEC: 4BB6D02F (32 bits)
Raw (68): 8850 -4450 600 -550 550 -1650 550 -550 600 -550 550 -1650 550 -550 550 -1700 550 -1650 550 -1650 550 -550 550 -1650 600 -1650 550 -550 550 -1700 550 -1650 550 -550 550 -1650 550 -1650 600 -550 550 -1650 550 -550 600 -550 550 -550 550 -550 550 -550 550 -550 550 -1650 600 -500 600 -1650 550 -1650 600 -1650 550 -1650 550 
4BB6D02F
Decoded NEC: 4BB6D02F (32 bits)
Raw (68): 8850 -4450 600 -550 550 -1650 550 -550 550 -600 550 -1650 550 -550 550 -1700 500 -1650 600 -1650 550 -550 550 -1650 600 -1650 550 -550 550 -1650 550 -1700 550 -550 500 -1700 550 -1650 600 -550 550 -1650 550 -550 550 -600 550 -550 550 -550 550 -550 550 -550 550 -1650 600 -550 550 -1650 550 -1700 500 -1700 550 -1650 550 
B60299D7
Unknown encoding: B60299D7 (32 bits)
Raw (66): 8850 -4450 600 -550 550 -2800 550 -550 550 -1650 550 -550 550 -1650 600 -1650 550 -1650 550 -600 550 -1650 550 -1650 550 -600 500 -1700 500 -1700 550 -600 500 -1650 600 -500 600 -550 550 -1650 550 -600 550 -500 600 -500 600 -550 550 -550 550 -1650 550 -1650 600 -550 550 -1650 550 -1700 550 -1650 550 -1650 550 
2A5AD9DE
Unknown encoding: 2A5AD9DE (32 bits)
Raw (58): 8850 -4450 600 -600 500 -1650 550 -3900 550 -650 450 -1950 300 -1700 500 -1700 500 -1700 500 -1700 500 -600 550 -1700 500 -550 600 -1650 550 -550 550 -1700 500 -600 550 -1650 500 -600 550 -1700 500 -1850 350 -1750 500 -2800 550 -550 550 -1650 550 -1750 450 -1700 550 -550 550 
A00F26B8
Unknown encoding: A00F26B8 (32 bits)
Raw (66): 8850 -4450 600 -550 550 -1700 550 -600 500 -550 550 -2750 550 -1700 500 -1750 500 -1650 550 -600 550 -1650 550 -1700 500 -600 550 -1650 550 -1650 550 -550 550 -1650 600 -600 500 -750 350 -1750 450 -650 500 -550 550 -550 550 -550 550 -600 500 -1650 600 -1650 550 -600 500 -1750 450 -1700 550 -1650 550 -1700 500 
90A04929

Beh, diciamo che è molto probabile quindi che sia una codifica NEC e quel tasto è decodificato con codice 4BB6D02F ("Decoded NEC: 4BB6D02F"), visto che stando a quanto riporti ora la singola pressione ti dà sempre lo stesso codice (prima dicevi di no, cosa è cambiato?).
Ma potrebbe anche bastare, a patto che appunto il codice sia sempre lo stesso per ogni tasto e che tu non debba gestire anche i "repeat" (quindi non potrai "tenere premuto" un tasto ma premerlo più volte).

Altrimenti diciamo che il "repeat" però è strano perché come ha detto anche nid69ita generalmente o è lo stesso codice ripetuto o è un codice di ripetizione indipendente dal primo e finora ho sempre visto solo FFFFFFFF, mentre qui hai codici con codifica "unknown" e valore non regolare (confronta i timing dei dati raw, sono "simili" ma con alcune differenze). Quindi è possibile che non sia proprio codifica NEC e/o che quel telecomando funzioni con una frequenza di portante diversa da 38kWz (cosa forse più probabile, piccole differenze di portante non danno generalmente problemi gravi, ma per dire con un TSOP 38 non riceverai mai correttamente una portante a 56kHz).

Prova a cercare in rete infomrazioni su QUEL telecomando, per capire la sua frequenza di portante.

Oppure, come ho fatto io, acquista una licenza del software analysIR maker Edition (25$ ma leggo che c'è una promozione con sconto 10%!) e con quello puoi analizzare a fondo il segnale e relativa codifica.