//Funcionamiento de control remoto mediante ondas infrarojas
//vERSION 2 MODIFICADA
#include <IRremote.h>//Incluir libreria para el mando
#include <LiquidCrystal.h>//Incluir libreria para el Display.
#define PIN_RECEIVER 2 // Define el pin 2 con el nombre pin receiver.
IRrecv receiver(PIN_RECEIVER);//Define el pin_receiver como recptor de los datos.
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);//Definimos los pines que necesita el display
void setup()//acciones fijas que se realizan al principio del programa una vez y no vuelven a repetirse
{
lcd.begin(16, 2);//Comienzo del display con 16 columnas y dos filas
lcd.print("<press a button>");// //escribe en la línea: <Pulsa un boton>
receiver.enableIRIn(); //Comienza para iniciar el receptor de infrarrojos Start the receiver
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
}
void loop()//algoritmo que se repite en bucle hasta desconectemos el microcontrolador
{
// Checks received an IR signal
if (receiver.decode()) {// Si se recibe una señal con el pin receiver 2 realiza:
translateIR();//realizala función traslate.IR()
receiver.resume();// la funcion receiver.resume() (mas abajodefiniremos esta función)
}
}
void lcdPrint(char* text) //comenzamos a declarar la funcion Lcdprint
{
lcd.clear();//limpiamos display
lcd.setCursor(0, 0);//colocoamos el cursor por 0,0
lcd.print("button pressed:");//que muestre en la pantalla boton pulsado
lcd.setCursor(0, 1);// colocamos el cursor al principio de la linea de abajo
lcd.print(text);//escribimos la variable text, la definiremos más adelante
lcd.print(" code: ");//luego escribimos code
lcd.print(receiver.decodedIRData.command);//luego escribimos el codigo decodec IR Data
}
void translateIR()
{
// Takes command based on IR code received
switch (receiver.decodedIRData.command) {
case 162:
lcdPrint("POWER");
break;
case 226:
lcdPrint("MENU");
break;
case 34:
lcdPrint("TEST");
break;
case 2:
lcdPrint("PLUS");
break;
case 194:
lcdPrint("BACK");
break;
case 224:
lcdPrint("PREV.");
break;
case 168:
lcdPrint("PLAY");
break;
case 144:
lcdPrint("NEXT");
break;
case 104:
lcdPrint("num: 0");
digitalWrite(6,HIGH);
break;
case 152:
lcdPrint("MINUS");
break;
case 176:
lcdPrint("key: C");
break;
case 48:
lcdPrint("num: 1");
digitalWrite(6,LOW);
break;
case 24:
lcdPrint("num: 2");
digitalWrite(5,HIGH);
break;
case 122:
lcdPrint("num: 3");
digitalWrite(5,LOW);
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(" other button");
}
}