Estamos tan acostumbrados a los mandos a distancia infrarrojos
que no dedicamos un momento a pensar en ellos y simplemente nos parece
normal, algo que a nuestros abuelos les hubiera parecido magia.
Nos parece normal que los equipos
electrónicos, televisores, cadenas de música, aires acondicionados,
respondan a nuestras instrucciones sin levantarnos del sofá, pero esto
no ha sido siempre así, es más, es relativamente reciente, que estos
mandos se popularizaron.
Pero el concepto de la emisión y
recepción de señales infrarrojas no es, ni mucho menos trivial, y exige
tener nociones de ondas electromagnéticas (energía, frecuencia,
longitud, etc...) que sobrepasan nuestro nivel. No obstante para
aquellos que queráis profundizar más en el tema os recomiendo la
excelente descripción del artículo de Prometec sobre sensores infrarrojos.
Un típico receptor de infrarrojos, es el AX-1838HS, que se consigue por
poco más de unos euros. En su hoja de normas encontráis este diagrama,
y son relativamente fáciles de encontrar, en dos formas. Independientes y
montados en un soporte para utilizar sin complicaciones con nuestros
Duinos.
El esquema de conexión nuevamente es trivial, pues el AX-1838HS solo tiene 3 pines: Vcc, GND y señal.
El objetivo de este ejercicio es aprender a recibir señales infrarrojas mediante un sensor/receptor IR emitidas por un mando a distancia de infrarrojo.
Circuito eléctrico
Con lo que bastará con conectar la patilla GND al pin GND de Arduino, la patilla VCC al pin 5V de Arduino y la patilla DAT (señal) a cualquier salida digital de Arduino, en nuestro caso, lo haremos al pin digital 9.
Ejemplos de código
Existen múltiples librerías para emplear mandos a
distancia con Arduino. Nosotros usaremos la librería Arduino-IRremote
desarrollada por Rafi Khan (z3t0) disponible en este enlace.
El siguiente código realiza la lectura del valor recibido por el mando,
y lo muestra por pantalla. El código se muestra en formato hexadecimal.
// Incluir la librería para trabajar con el sensor IR
#include "IRremote.h"
// Definición de variables y constantes relacionadas con el sensor infrarrojos
const int RECV_PIN=9; // Pin digital 9 para conectar el sensor
IRrecv irrecv(RECV_PIN); // Se crea un nuevo objeto para trabajar con el sensor
decode_results results;
void setup()
{
Serial.begin(9600); // Se inicia el puerto de comunicaciones en serie
irrecv.enableIRIn(); // Se inicia el receptor IR
}
void loop()
{
if(irrecv.decode(&results))
{
Serial.println(results.value, HEX);
irrecv.resume();
}
}
No hay comentarios:
Publicar un comentario