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:
ritrasmette sempre lo stesso codice
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:
ritrasmette sempre lo stesso codice
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
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ì:
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.