/***********************************************************
Mando a distancia por IR capaz de controlar un display
Autor: DP
***********************************************************/
#include <IRremote.h> //Librería del control remoto por IR
#include <LiquidCrystal_I2C.h> //Librería del LCD por i2c
#define IRpin 2 //Definimos el pin del IR
IRrecv receiver(IRpin); //Creamos un objeto para el IR, llamado "reciever"
//LiquidCrystal_I2C lcd(i2cAdress (0x27 o 0x3F), número de columnas, número de filas)
LiquidCrystal_I2C lcd(0x27,16,2); //Creamos display con la dirección del I2C, columnas y filas. Llamado "lcd"
void setup() {
lcd.init(); // Inicializar el LCD con libreria i2c
lcd.backlight(); //Encender la luz de fondo.
lcd.print("<Pulse un boton>"); // Escribimos un mensaje en el LCD
receiver.enableIRIn(); // Start the receiver
}
void loop(){
//Comprueba si se recibe señal del IR
if (receiver.decode()) {
translateIR();
receiver.resume(); //Recibe el siguiente valor
}
}
//Función "lcdPrint". Un caracter más un texto
void lcdPrint(char* text){
lcd.clear(); //Borramos la pantalla y la dejamos vacía
lcd.setCursor(0, 0); //Nos posicionamos en la posición -> columna0, fila0
lcd.print("Boton pulsado:"); //Texto que indica que un botón ha sido pulsado
lcd.setCursor(0, 1); //Nos posicionamos en la posición -> columna0, fila1
lcd.print(text); //Escribe el texto de la variable "text"
lcd.setCursor(6, 1); //Nos posicionamos en la posición -> columna6, fila1
lcd.print("Codigo:"); //Escribe el codigo asignado al botón pulsado
lcd.print(receiver.decodedIRData.command);
}
//Creamos la función "translateIR". Transforma el codigo binario que le envia el mando al IR
void translateIR(){
//Cambia según lo que reciba a través del sensor IR
switch (receiver.decodedIRData.command) {
case 162:
lcdPrint("ON");
break;
case 226:
lcdPrint("MENU");
break;
case 34:
lcdPrint("TEST");
break;
case 2:
lcdPrint(" + ");
break;
case 194:
lcdPrint("Atras");
break;
case 224:
lcdPrint("Ant.");
break;
case 168:
lcdPrint("Inic.");
break;
case 144:
lcdPrint("Sig.");
break;
case 104:
lcdPrint("Num:0");
break;
case 152:
lcdPrint(" - ");
break;
case 176:
lcdPrint("Let:C");
break;
case 48:
lcdPrint("Num:1");
break;
case 24:
lcdPrint("Num:2");
break;
case 122:
lcdPrint("Num:3");
break;
case 16:
lcdPrint("Num:4");
break;
case 56:
lcdPrint("Num:5");
break;
case 90:
lcdPrint("Num:6");
break;
case 66:
lcdPrint("Num:7");
break;
case 74:
lcdPrint("Num:8");
break;
case 82:
lcdPrint("Num:9");
break;
default:
lcd.clear();
lcd.print(receiver.decodedIRData.command);
lcd.print("Otro boton");
}
}