#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
}
}
per farmi comparire nel Monitor Seriale i codici corrispondenti ai tasti premuti, ma quando premo mi compare questo :
premo tasto 1 :
FF30CF
FFFFFFFF
premo tasto 2
FF18E7
FFFFFFFF
premo tasto 3 :
FF7A85
FFFFFFFF
e così via per tutti i tasti (sul 5 addirittura :
premo 5 :
FF5AA5
FFFFFFFF
ripremo tasto 5 :
FF
FFFFFFFF
)....
Perchè mi escono per tutti i tasti i valori " FFFFFFFF " ?
E perchè sul tasto 5 del telecomando se premo 2 consecutive mi escono 2 valori differenti tra loro? Un pulsante non dovrebbe dare sempre (ad ogni click) lo stesso valore?
Alcuni telecomandi, se tieni premuto il tasto a lungo, invece di spedire di continuo lo stesso codice, inviano una volta il codice giusto e poi successivamente FFFFFFF.
Ho fatto degli esperimenti con un telecomando per TV della Sony. In particolare un programma che aumentava o diminuiva la velocità di tre motori in PWM. Usavo i tasti 123 per aumentare la velocità, i tasti 456 per diminuirla, i tasti 789 per accendere/spegnere tre periferiche on/off (led) e il tasto 0 per spegnere tutto.
Se ti può servire i codici (decimali) associati erano i seguenti:
tasto1 16 // aumenta PWM pin associato al tasto 1
tasto2 2064 // aumenta PWM pin associato al tasto 2
tasto3 1040 // aumenta PWM pin associato al tasto 3
tasto4 3088 // diminuisce PWM pin associato al tasto 1
tasto5 528 // diminuisce PWM pin associato al tasto 2
tasto6 2576 // diminuisce PWM pin associato al tasto 3
tasto7 1552 // accende/spegne pin associato al tasto 7
tasto8 3600 // accende/spegne pin associato al tasto 8
tasto9 272 // accende/spegne pin associato al tasto 9
tasto0 2320 // spegne tutti i pin
nid69ita:
Alcuni telecomandi, se tieni premuto il tasto a lungo, invece di spedire di continuo lo stesso codice, inviano una volta il codice giusto e poi successivamente FFFFFFF.
Esatto. Se ricevi quel codice significa semplicemente che va ripetuto l'ultimo comando/tasto.
Gagge89:
Quindi devo cambiare telecomando?Quale mi consigliate voi?
Non c'è bisogno di cambiare alcun telecomando (a meno che non sia "strano" come codifica), devi solo capire la sua codifica ed implementare quello che vuoi fare seguendo tale codifica, tutto qui.
Per fare questo usa uno degli esempi inclusi nella libreria IRremote, ad esempio "IRrecvDump" che ti mostra tutte le informazioni relative ai codici acquisiti. Fai qualche prova mandando 2 o 3 dei tasti che vuoi mappare, e se vuoi una mano ad interpretarli posta qui l'output del programma.