Leer señales del Mando a distancia


Todos los mandos a distancia utilizan luz infrarroja como forma de comunicarse, por lo tanto vamos a necesitar un receptor de Infrarrojos. Yo he utilizado el IR Keyes 022



El pin marcado con S, va conectado al pin 11 de la placa.



El sketch seria el siguiente:


#include <IRremote.h>
#define irPin 11

IRrecv irrecv(irPin);
decode_results results;

void setup() {
        Serial.begin(9600);
        irrecv.enableIRIn();
}

void loop() {
        if (irrecv.decode(&results)) {
            Serial.print("0x");
            Serial.println(results.value, HEX);
            delay(250);
            irrecv.resume();
      }
}

La tarea de este código es leer los datos desde el receptor conectado al pin 11 y enviarlo al Serial Monitor. Este programa nos mostrara los códigos de los botones de nuestro control remoto.
Primero hay que descargar la librería irRemote, que nos proporcionara una forma sencilla de leer las señales recibidas. Descargamos, descomprimimos e instalamos en el IDE de Arduino. Enlace de descarga: https://github.com/z3t0/Arduino-IRremote

Es necesario quitar temporalmente la librería RobotIRemote ya que no se porque entra en conflicto con la librería antes mencionada.

En el vídeo adjunto podemos ver el resultado de la ejecución en el Serial Monitor. Los códigos que aparecen corresponden con los números: 1,2,3,4,5,6,7,8,9,0 , flecha arriba, flecha abajo, flecha izquierda, flecha derecha y OK, correspondientes al mando a distancia de mi televisor Samsung.




Ya tenemos los códigos de los botones que queremos utilizar, ahora tenemos que añadir un poco mas de código para mejorarlo.












#include <IRremote.h>
#define irPin 11
IRrecv irrecv(irPin);
decode_results results;

void setup() {
   Serial.begin(9600);
   irrecv.enableIRIn();
}

void loop() {
   if (irrecv.decode(&results)) {

      switch (results.value) {
        
         case 0xE0E020DF:
            Serial.println("1");
            break;

         case 0xE0E0A05F:
            Serial.println("2");
            break;

         case 0xE0E0609F:
            Serial.println("3");
            break;

         case 0xE0E010EF:
            Serial.println("4");
            break;

         case 0xE0E0906F:
            Serial.println("5");
            break;

         case 0xE0E050AF:
            Serial.println("6");
            break;

         case 0xE0E030CF:
            Serial.println("7");
            break;

         case 0xE0E0B04F:
            Serial.println("8");
            break;

         case 0xE0E0708F:
            Serial.println("9");
            break;

         case 0xE0E08877:
            Serial.println("0");
            break;

         case 0xE0E006F9:
            Serial.println("Flecha Arriba");
            break;

         case 0xE0E0A659:
            Serial.println("Flecha Izquierda");
            break;

         case 0xE0E046B9:
            Serial.println("Flecha Derecha");
            break;
            
        case 0xE0E08679:
            Serial.println("Flecha Abajo");
            break;
            
         case 0xE0E016E9:
            Serial.println("Boton OK");
            break;
         }

   irrecv.resume();
   }
}





En una próxima entrada veremos las posibles utilidades practicas de esto. Manejar distintas cosas con el mando a distancia.

Para aprender mas: http://majsterkowo.pl/




No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.