#include <Wire.h>
#include <LiquidCrystal_I2C.h> // Librería para LCD I2C
#include <IRremote.hpp> // Usando IRremote versión 4.x
// Configuración del LCD I2C (dirección común 0x27 para 16x2)
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int RECV_PIN = 11; // Pin del sensor IR
void setup() {
Serial.begin(9600); // Inicializar comunicación serial
// Inicializar LCD
lcd.init();
lcd.backlight();
lcd.clear();
// Mostrar mensaje inicial
lcd.setCursor(0, 0);
lcd.print("Receptor IR");
lcd.setCursor(0, 1);
lcd.print("Esperando señal...");
// Configurar receptor IR
IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK);
Serial.println("Receptor IR inicializado");
}
void loop() {
if (IrReceiver.decode()) {
// Obtener el código RAW en hexadecimal
uint32_t code = IrReceiver.decodedIRData.decodedRawData;
// Mostrar en monitor serial
Serial.println();
Serial.print("Código recibido: 0x");
Serial.println(code, HEX);
// Mostrar en LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Codigo IR HEX:");
lcd.setCursor(0, 1);
if (code == 0xFFFFFFFF) {
lcd.print("REPETICION");
} else {
// Formatear el código HEX para mostrarlo correctamente
char hexStr[9]; // 8 caracteres para 32 bits + null terminator
sprintf(hexStr, "0x%08lX", code);
lcd.print(hexStr);
}
// Pequeña pausa para visualización
delay(500);
// Continuar recibiendo
IrReceiver.resume();
}
}