Control Remoto IR usando Arduino

Muchas gracias.

Algún miembro del foro que tenga nociones de éste sistema y me pueda ayudar, por favor. Algún código para compartir.

Ésto es lo que aparece en el monitor serial.

Ver el archivo adjunto 263907

Al presionar cualquier botón de cualquier control remoto, aparece solo un 0 (cero) en el monitor serial.

Gracias.

Hugo.
Es importante que subas un diagrama, foto, de lo que estas haciendo, sino, es muy difícil dimensionar el origen de tu problema, yo podría pensar que esta mal tu conexión desde tu receptor IR, que ni mencionas de que tipo es … en fin.

Y por supuesto, los ejemplos básicos que vienen junto con la librería "IRremote.h" te deberían funcionar o decir algo.
 
Hola miborbolla, probe con el ejemplo IRrelay y funciona perfecto, pero el problema es que para encender un led y activar un rele basta presionar cualquier tecla del control remoto y para apagar el led lo mismo.

Subo el código para que sepas de que hablo

/*
* IRremote: IRrelay - demonstrates receiving IR codes with IRrecv
* Toggles an output pin at each command received
* An IR detector/demodulator must be connected to the input RECV_PIN.
* Initially coded 2009 Ken Shirriff Ken Shirriff's blog
*/

#include <IRremote.h>

#if defined(ESP32)
int IR_RECEIVE_PIN = 15;
#else
int IR_RECEIVE_PIN = 11;
#endif
int RELAY_PIN = 4; // is labeled D2 on the Chinese SAMD21 M0-Mini clone

// On the Zero and others we switch explicitly to SerialUSB
#if defined(ARDUINO_ARCH_SAMD)
#define Serial SerialUSB
// The Chinese SAMD21 M0-Mini clone has no led connected, if you connect it, it is on pin 24 like on the original board.
// Attention! D2 and D4 are reversed on these boards
//#undef LED_BUILTIN
//#define LED_BUILTIN 25 // Or choose pin 25, it is the RX pin, but active low.
#endif

void dump();

void setup() {
pinMode(LED_BUILTIN, OUTPUT);
pinMode(RELAY_PIN, OUTPUT);

Serial.begin(115200);
#if defined(__AVR_ATmega32U4__) || defined(SERIAL_USB) || defined(SERIAL_PORT_USBVIRTUAL) || defined(ARDUINO_attiny3217)
delay(2000); // To be able to connect Serial monitor after reset or power up and before first printout
#endif
// Just to know which program is running on my Arduino
Serial.println(F("START " __FILE__ " from " __DATE__ "\r\nUsing library version " VERSION_IRREMOTE));

IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Start the receiver, enable feedback LED, take LED feedback pin from the internal boards definition

Serial.print(F("Ready to receive IR signals at pin "));
Serial.println(IR_RECEIVE_PIN);
}

int on = 0;
unsigned long last = millis();

void loop() {
if (IrReceiver.decode()) {
// If it's been at least 1/4 second since the last
// IR received, toggle the relay
if (millis() - last > 250) {
on = !on;
Serial.print(F("Switch relay "));
if (on) {
digitalWrite(RELAY_PIN, HIGH);
Serial.println(F("on"));
} else {
digitalWrite(RELAY_PIN, LOW);
Serial.println(F("off"));
}

IrReceiver.printIRResultShort(&Serial);
Serial.println();
if (IrReceiver.decodedIRData.protocol == UNKNOWN) {
// We have an unknown protocol, print more info
IrReceiver.printIRResultRawFormatted(&Serial, true);
}
}
last = millis();
IrReceiver.resume(); // Enable receiving of the next value
}
}

ahi esta
Mensaje automáticamente combinado:

y con este programa en donde aparece un codigo de un solo boton en particular para encender el led y otro codigo diferente de otra tecla para apagar no me funciona.

#include <IRremote.h>
int receptor = 11;
int led = 4;
IRrecv irrecv(receptor);
decode_results co; //OBJETO CODIGO DE CLASE decode_result, oriundo de IRremote.h

void setup()
{
pinMode(4, OUTPUT);
pinMode(11, INPUT);
Serial.begin(115200);
irrecv.enableIRIn(); // INICIA LA RECEPCIÓN

}

void loop()
{
if (irrecv.decode(&co))
{
Serial.println(co.value, HEX);

if (co.value == 0xBA45FF00)//CÓDIGO DEL NÚMERO UNO PARA ACTIVAR LED
{
digitalWrite(led, HIGH);
}

if (co.value == 0xB847FF00)//CÓDIGO DEL NÚMERO TRES PARA DESACTIVAR LED
{
digitalWrite(led, LOW);


}
delay(500);

irrecv.resume();

}
}

Ahí esta, ojalá me puedas ayudar....ya no se hacer para que funcione.

Saludos y estaré atento.
 
Por lo que parece en el primer código es que o decodifica.
Imprime por el puerto serie el código que decodificas al recibir y a partir de ahí pones las condiciones.
 
gracias Scooter,

una consulta antes de seguir...existirá algún posible problema al tener un notebook de 64bits en lugar de uno con 32 bits. La pregunta es porque el año pasado utilicé un notebook de 32 bits y no tuve problemas...podrá ser ese mi inconveniente?

Saludos.

Estaré atento
 
Para la proxima, publica el codigo formateado. Si no sabes cómo, lee acá: [Tutorial] ¿Cómo subir archivos? (XenForo)

Dejame ver si entiendo el codigo, y te digo. Yo hice un amplificador con un control remoto de esos universales chiquititos que vienen en unos aparatos chinos, y nunca tuve problemas. Es mas, hasta estuve probando para una alarma de auto por IR, y tampoco tuve problemas.
Lo importante es hacer un programa que te envie al terminal serial de Arduino, los codigos de cada tecla. De ahi a un "switch-case", y de ahi a lo que quieras.
Serial.println(co.value, HEX);
Con ésto lees cada boton, luego realizas un "switch-case" o si prefieres un "if-else", con esos codigos... Todo esto lo lees desde el monitor serial.

No te puedo pasar los codigos de mi control, porque cada control usa diferentes para cada boton
 
gracias Scooter,

una consulta antes de seguir...existirá algún posible problema al tener un notebook de 64bits en lugar de uno con 32 bits. La pregunta es porque el año pasado utilicé un notebook de 32 bits y no tuve problemas...podrá ser ese mi inconveniente?

Saludos.

Razona un poco. ¿El sistema operativo DEL PC se ejecuta EN EL ARDUINO?.
En lo único que podría influir es en que no tengas drivers y no te puedas comunicar con el arduino.
 
Atrás
Arriba