domingo, 20 de enero de 2019

Arduino: Control con mando IR

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