Hola,
estoy intentando hacer un proyecto donde los valores que reciba el sensor(En codigo hexadecimal)se muestren en una lcd pero el sensor al parecer no funciona.Este es mi codigo:
#include <IRremote.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define RECV_PIN 11 // Pin para el sensor IR
IRrecv irrecv(RECV_PIN);
decode_results results;
LiquidCrystal_I2C lcd(0x27,16,2); // Dirección I2C de la pantalla LCD
void setup()
{
irrecv.enableIRIn(); // Inicia el receptor
lcd.init(); // Inicia la pantalla LCD
lcd.backlight(); // Enciende la luz de fondo de la LCD
}
void loop() {
if (irrecv.decode(&results)) {
lcd.clear(); // Limpia la pantalla LCD
lcd.setCursor(0,0); // Posiciona el cursor en la esquina superior izquierda
lcd.print("Codigo Hex: ");
lcd.setCursor(0,1); // Posiciona el cursor en la segunda línea
lcd.print(results.value, HEX); // Imprime el valor hexadecimal
irrecv.resume(); // Recibe el siguiente valor
}
}
Esa forma que tienes de configurar y llamar al IR es obsoleta, durante un tiempo la propia librería te informaba de ello vía monitor serial y que en breve dejaría de funcionar.
Pues ya no avisa ni funciona, la forma correcta actualmente es:
#include <IRremote.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define RECV_PIN 11 // Pin para el sensor IR
LiquidCrystal_I2C lcd(0x27, 16, 2); // Dirección I2C de la pantalla LCD
void setup()
{
IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK);// Inicia el receptor
lcd.init(); // Inicia la pantalla LCD
lcd.backlight(); // Enciende la luz de fondo de la LCD
}
void loop() {
if (IrReceiver.decode()) {
lcd.clear(); // Limpia la pantalla LCD
lcd.setCursor(0, 0); // Posiciona el cursor en la esquina superior izquierda
lcd.print("Codigo Hex: ");
lcd.setCursor(0, 1); // Posiciona el cursor en la segunda línea
lcd.print(IrReceiver.decodedIRData.command, HEX); // Imprime el valor hexadecimal
IrReceiver.resume(); // Recibe el siguiente valor
}
}
Pero es fácil sacarse la duda, envía por serial lo que envías al LCD, si en consola ves los resultados y no en la LCD, el problema es con la LCD, si no recibes nada en consola, es el IR.
Te adelanto que el código de #2 lo probé por consola y funciona.