#include <IRremote.h> // importa libreria IRremote
#define Boton_1 0xCF30FF00 // reemplaza cada instancia de Boton_1 por su valor HEX
#define Boton_2 0xE718FF00
#define Boton_3 0x857AFF00
#define Boton_4 0xEF10FF00
#define Boton_5 0x5DA2FF00
int SENSOR = 4; // sensor KY-022 a pin digital 11
int LED1 = 14;
int LED2 = 27;
int LED3 = 26;
int LED4 = 25;
void setup() {
Serial.begin(9600); // inicializa comunicacion serie a 9600 bps
IrReceiver.begin(SENSOR, DISABLE_LED_FEEDBACK); // inicializa recepcion de datos
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT); // pin 14 como salida
}
void loop() {
if (IrReceiver.decode()) { // si existen datos ya decodificados
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX); // imprime valor en hexadecimal en monitor
if (IrReceiver.decodedIRData.decodedRawData == Boton_1) // si codigo recibido es igual a Boton_1
digitalWrite(LED1, !digitalRead(LED1)); // enciende o apaga componente rojo
if (IrReceiver.decodedIRData.decodedRawData == Boton_2) // si codigo recibido es igual a Boton_1
digitalWrite(LED2, !digitalRead(LED2)); // enciende o apaga componente rojo
if (IrReceiver.decodedIRData.decodedRawData == Boton_3) // si codigo recibido es igual a Boton_1
digitalWrite(LED3, !digitalRead(LED3)); // enciende o apaga componente rojo
if (IrReceiver.decodedIRData.decodedRawData == Boton_4) // si codigo recibido es igual a Boton_1
digitalWrite(LED4, !digitalRead(LED4)); // enciende o apaga componente rojo
// resume la adquisicion de datos
if (IrReceiver.decodedIRData.decodedRawData == Boton_5) // si codigo recibido es igual a Boton_1
digitalWrite(LED1, !digitalRead(LED1));
digitalWrite(LED2, !digitalRead(LED2));
digitalWrite(LED3, !digitalRead(LED3));
digitalWrite(LED4, !digitalRead(LED4)); // enciende o apaga componente rojo
IrReceiver.resume();
}
delay (100); // breve demora de 100 ms.
}