Saltar la navegación

Series de leds on/off por IR

Series de leds on/off por IR

/*
En este ejemplo utilizaremos los botones para encender/apagar los leds 1, 2, 3, 4 y 0.
Con el ejemplo anterior averiguamos los códigos de las teclas 1,2,3,4 y 0.
Los códigos del mando a distancia keyes son:
Boton_1 = 0xFF6897
Boton_2= 0xFF9867
Boton_3=0xFFB04F
Boton_4=0xFF30CF
Boton_0=0xFF4AB5

Los códigos del mando a distancia simulador Tinkercad son:
Boton_1 0xFD08F7
Boton_2 0xFD8877
Boton_3 0xFD48B7
Boton_4 0xFD28D7
Boton_0 0xFD30CF

www.sacosta.org 09/2019


*/

#include <IRremote.h> // importa libreria IRremote
#define Boton_1 0xFD08F7 // reemplaza cada instancia de Boton_1 por su valor HEX
#define Boton_2 0xFD8877 // reemplaza cada instancia de Boton_2 por su valor HEX
#define Boton_3 0xFD48B7 // reemplaza cada instancia de Boton_3 por su valor HEX
#define Boton_4 0xFD28D7 // reemplaza cada instancia de Boton_4 por su valor HEX
#define Boton_0 0xFD30CF // reemplaza cada instancia de Boton_0 por su valor HEX

int SENSOR = 11; // sensor KY-022 a pin digital 11
IRrecv irrecv(SENSOR); // establece al 11 para objeto irrecv
decode_results codigo; // crea objeto código de la clase decode_results

int Led_1 = 2; // componente rojo de LED RGB a pin 2
int Led_2 = 3; // componente verde de LED RGB a pin 3
int Led_3 = 4;
int Led_4 = 5; // componente azul de LED RGB a pin 4

void setup() {
Serial.begin(9600); // inicializa comunicacion serie a 9600 bps
irrecv.enableIRIn(); // inicializa recepcion de datos
pinMode(Led_1, OUTPUT); // pin 2 como salida
pinMode(Led_2, OUTPUT); // pin 3 como salida
pinMode(Led_3, OUTPUT); // pin 4 como salida
pinMode(Led_4, OUTPUT); // pin 5 como salida
}

void loop() {
if (irrecv.decode(&codigo)) { // si existen datos ya decodificados
Serial.println(codigo.value, HEX); // imprime valor en hexadecimal en monitor
if (codigo.value == Boton_1) // si codigo recibido es igual a Boton_1
serie_1();
if (codigo.value == Boton_2) // si codigo recibido es igual a Boton_2
serie_2();
if (codigo.value == Boton_3) // si codigo recibido es igual a Boton_3
serie_3();
if (codigo.value == Boton_4) // si codigo recibido es igual a Boton_4
serie_4();
if (codigo.value == Boton_0) { // si codigo recibido es igual a Boton_0
apagar_todos();
}
irrecv.resume(); // resume la adquisicion de datos
}
delay (100); // breve demora de 100 ms.
}
void apagar_todos (){
digitalWrite(Led_1, LOW); // apaga led_1
digitalWrite(Led_2, LOW); // apaga led_2
digitalWrite(Led_3, LOW); // apaga led_3
digitalWrite(Led_4, LOW); // apaga led_4
delay (100);
}
void encender_todos(){
digitalWrite(Led_1, HIGH); // enciende led_1
digitalWrite(Led_2, HIGH); // enciende led_2
digitalWrite(Led_3, HIGH); // enciende led_3
digitalWrite(Led_4, HIGH); // enciende led_4
delay (100);
}
void serie_1 (){
apagar_todos ();

digitalWrite(Led_1, HIGH);
delay (300);
digitalWrite(Led_2, HIGH);
delay (300);
digitalWrite(Led_3, HIGH);
delay (300); // breve demora de 100 ms.
digitalWrite(Led_4, HIGH);
delay(2000);
apagar_todos();
delay(200);
encender_todos();
delay(200);
apagar_todos();
delay(200);
encender_todos();
delay(2000);
apagar_todos();

}
void serie_2 (){
apagar_todos ();

digitalWrite(Led_1, HIGH);
//delay (300);
digitalWrite(Led_3, HIGH);
delay (500);
digitalWrite(Led_2, HIGH);
//delay (300);
digitalWrite(Led_4, HIGH);
delay(2000);
apagar_todos();
delay(200);
encender_todos();
delay(200);
apagar_todos();
delay(200);
encender_todos();
delay(2000);
apagar_todos();

}
void serie_3 (){
apagar_todos ();

digitalWrite(Led_4, HIGH);
delay (300);
digitalWrite(Led_3, HIGH);
delay (300);
digitalWrite(Led_2, HIGH);
delay (300);
digitalWrite(Led_1, HIGH);
delay(2000);
apagar_todos();
delay(200);
encender_todos();
delay(200);
apagar_todos();
delay(200);
encender_todos();
delay(2000);
apagar_todos();

}
void serie_4 (){
apagar_todos ();

digitalWrite(Led_4, HIGH);
//delay (300);
digitalWrite(Led_3, HIGH);
delay (500);
digitalWrite(Led_2, HIGH);
//delay (300);
digitalWrite(Led_1, HIGH);
delay(2000);
apagar_todos();
delay(200);
encender_todos();
delay(200);
apagar_todos();
delay(200);
encender_todos();
delay(2000);
apagar_todos();

}