Hola de nuevo, hoy me he lanzado a leer y emitir señales infrarrojas. Mi intención era ser capaz de "leer" el mando de la tele, copiar los parámetros y emitir desde mi placa Arduino UNO esos parámetros. Después de informarme un poco de distintas librerías que me faciliten la vida me he decidido en primer lugar por IRRemote en primer lugar pero no ha acabado de convencerme y finalmente por IRLRemote (GitHub - NicoHood/IRLremote: Lightweight Infrared library for Arduino) que es bastante más simple para lo que quiero.
La parte de recibir una señal y traducirla ha sido muy fácil y rápida, casi plug'n'play, pero en el momento de emitir la misma señal me da un error que no entiendo (creo que es más cosa de no acabar de entender C++, concretamente los "templates", creo, que de Arduino). He probado tal cual el ejemplo que hay en github y me sale el mismo error, lo que me hace pensar que es cosa mía (no creo que al modder le vaya bien y a mí exactamente lo mismo no, pero no lo descarto tampoco).
Mi código es:
#include <IRLremote.h>
const int BotM=9; //+ Volumen
const int Botm=10; //- Volumen
const int ledIR=3; //Led IR
void setup() {
// put your setup code here, to run once:
pinMode(BotM,INPUT_PULLUP);
pinMode(Botm,INPUT_PULLUP);
pinMode(ledIR,OUTPUT); //En principio no hace falta hacer esto, pero de perdidos al río.
}
void loop() {
// put your main code here, to run repeatedly:
if (!digitalRead(BotM)) {
uint16_t address=0x20DF;
uint32_t command=0x40BF;
IRLwrite<IR_NEC>(ledIR, address, command); //LÍNEA QUE PROVOCA EL FALLO
delay(300);
}
if (!digitalRead(Botm)) {
uint16_t address=0x20DF;
uint32_t command=0xC03F;
IRLwrite<IR_NEC>(ledIR, address, command); //LÍNEA QUE PROVOCA EL FALLO
delay(300);
}
}
El programa tiene 2 botones, al tocar uno debe subir el volumen, al tocar el otro bajarlo.
El error que me da a mí es:
Arduino:1.6.5 (Windows 8.1), Placa:"Arduino Uno"
Emisor1.ino: In function 'void loop()':
Emisor1:16: error: no match for 'operator<' (operand types are 'void(uint8_t, uint16_t, uint32_t) {aka void(unsigned char, unsigned int, long unsigned int)}' and 'IRType')
Emisor1:22: error: no match for 'operator<' (operand types are 'void(uint8_t, uint16_t, uint32_t) {aka void(unsigned char, unsigned int, long unsigned int)}' and 'IRType')
no match for 'operator<' (operand types are 'void(uint8_t, uint16_t, uint32_t) {aka void(unsigned char, unsigned int, long unsigned int)}' and 'IRType')
- This report would have more information with*
- "Show verbose output during compilation"*
- activala desde Archivo > Preferencias*
He probado varias opciones a ciegas, y nada, no le saco punta.
El código del ejemplo del creador de la librería es:
¿Alguien que entienda la librería o del asunto puede echarme una mano?
Como siempre un saludo y gracias por adelantado.