Para ver cómo funciona un control con señales infrarrojas pongo dos ejemplos:
Ejemplo1
Encendido de un LED amarillo durante 1 segundo con la tecla ON/OFF de un mando a distancia y de otro LED verde con la tecla HOME.
Código:
//Incluimos la libreria para manejar el sensor IR
#include <IRremote.h>
long code=0; //almacenaremos el códio IR que recibe el
//sensor del mando a distancia
int pinIR = 2;//La señal del sensor va al pin 2
IRrecv receptorIR(pinIR); //declaramos un objeto del tipo Sensor IR
decode_results results; // variable que almacena lo que llega del mando
void setup()
{
pinMode(3, OUTPUT); //pines de los LEDs
pinMode(4, OUTPUT);
Serial.begin(9600);
receptorIR.enableIRIn(); //Inicializamos el sensor IR
//Instrucciones de funcionamiento
Serial.println("pulsa ON/OFF para encender el led amarillo");
Serial.println("pulsa HOME para encender el led rojo");
}
void loop()
{
digitalWrite(3,LOW); //apagamos los LEDs
digitalWrite(4,LOW);
if(receptorIR.decode(&results)){ //Si llega cualquier valor
code=results.value; //Lo almacenamos en la vbe code
Serial.println(results.value);
if((code==65548)or(code==12)){ //algunos mandos mandan varias
digitalWrite(3,HIGH); //señales al pulsar cada tecla
}
if((code==65620)or(code==84)){
digitalWrite(4,HIGH);
}
delay(1000); //Esperamos 1 segundos
receptorIR.resume(); //El receptor espera la siguiente señal
}
}
Ejemplo2
Encendido de dos LEDs con la tecla ON/OFF y apagado con la HOME
Código:
//Incluimos la libreria para manejar el sensor IR
#include <IRremote.h>
long code=0; //almacenaremos el códio IR que recibe el
//sensor del mando a distancia
int pinIR = 2; //La señal del sensor va al pin 2
int ordenEncender=0; //utilizamos esta vble para llamar al
//procedimiento encender() si esta a 1
//y apagar() si esta a 0
IRrecv irrecv(pinIR); //declaramos un objeto del tipo Sensor IR
decode_results results; // variable que almacena lo que llega del mando
void setup()
{
pinMode(3, OUTPUT); //pines de los LEDs
pinMode(4, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn();
//Instrucciones de funcionamiento
Serial.println("pulsa ON/OFF para encender los ledes");
Serial.println("pulsa HOME para apagar los ledes");
}
void loop()
{
digitalWrite(3,LOW);
digitalWrite(4,LOW);
if(irrecv.decode(&results)){ //Si llega cualquier valor
code=results.value; //Lo almacenamos en la vbe code
Serial.println(results.value);
if ((code==65548)or(code==12)){ //algunos mandos mandan varias señales al pulsar cada tecla
ordenEncender=1; //activamos la orden para encender
}
if((code==65620)or(code==84)){
ordenEncender=0; //desactivamos la orden para encender
}
//delay(1000);
irrecv.resume(); //El receptor espera la siguiente señal
}
if(ordenEncender==1){
encender();
}
if(ordenEncender==0){
apagar();
}
}
//encendemos los LEDs
void encender(){
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
}
//apagamos los LEDs
void apagar(){
digitalWrite(3,LOW);
digitalWrite(4,LOW);
}
No hay comentarios:
Publicar un comentario