He cargado la librería IRremote correctamente y cargado en el arduino, leido los códigos de mi mando pero a la hora de utilizarlos algo falla en la comunicación. Pulso el botón asignado del mando, aparece el valor en el Serial Monitor(para el botón 9 unas veces 9 y otras 809) pero no se enciende el led que yo asigné que se encendiera con ese valor.
No hay problemas en cuanto al hardware ni con las librerías todo está en orden, ¿Qué puede pasar? Os dejo los dos programas que he utilizado tanto para leer los códigos, como para encender un LED al recibir X código.
Código para decodificar:
#include <IRremote.h>
int RECV_PIN = 8;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
// Dumps out the decode_results structure.
// Call this after IRrecv::decode()
// void * to work around compiler issue
//void dump(void *v) {
// decode_results *results = (decode_results *)v
void dump(decode_results *results) {
int count = results->rawlen;
if (results->decode_type == UNKNOWN) {
Serial.print("Unknown encoding: ");
}
else if (results->decode_type == NEC) {
Serial.print("Decoded NEC: ");
}
else if (results->decode_type == SONY) {
Serial.print("Decoded SONY: ");
}
else if (results->decode_type == RC5) {
Serial.print("Decoded RC5: ");
}
else if (results->decode_type == RC6) {
Serial.print("Decoded RC6: ");
}
else if (results->decode_type == PANASONIC) {
Serial.print("Decoded PANASONIC - Address: ");
Serial.print(results->panasonicAddress,HEX);
Serial.print(" Value: ");
}
else if (results->decode_type == JVC) {
Serial.print("Decoded JVC: ");
}
Serial.print(results->value, HEX);
Serial.print(" (");
Serial.print(results->bits, DEC);
Serial.println(" bits)");
Serial.print("Raw (");
Serial.print(count, DEC);
Serial.print("): ");
for (int i = 0; i < count; i++) {
if ((i % 2) == 1) {
Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
}
else {
Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);
}
Serial.print(" ");
}
Serial.println("");
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
dump(&results);
irrecv.resume(); // Receive the next value
}
}
CODIGO ENCENDER LED CON UN VALOR:
#include <IRremote.h>
int RECV_PIN = 8;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Comienza a recibir
pinMode(13,OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
int lectura = results.value;
Serial.println(lectura, HEX);
//lee el código que llega a través del receptor IR y lo imprime en el serial.
if(lectura == 9){ //este es el código que debeis copiar del serial.
digitalWrite(13,HIGH);
delay(1000);
}
irrecv.resume(); // Recibe el siguiente valor
}
}
