Materiales.
-Arduino. (UNO en este caso. Pero vale cualquiera).
-Mando a distancia del TDT.
-Un led.
-Una resitencia de 220 oms. Como no tengo uso de 470. Podriamos montar 2 resistencias de 470 en paralero para dar 239 oms pero paso.
-Una protoboard.
-Cables.
-Una ficha de la luz.
-Ordenador.
-Cable USB para conectar el arduino.
A currar.
Parte física.
1 Conectamos el pin positivo y negativo de la arduino al los carriles de la protoboard.
2 Conectamos el receptor IR a la protoboard. Los sensores IR tienen 3 cables. Uno da corriente, otro es masa y el tercero es de datos. En mi caso el rojo en corriente. El pelado es masa y el blanco es datos.
Como están los cables deshilachados los conecto a una ficha. Esta ficha la conecto con los pelos de los cables de red a la protoboard.
Naranja: Corriente.
Naranja/blanco: masa.
Azul: Datos.
Pongo una resitencia de 470 oms (mejor 220) entre los 5,5 voltios de arduino y el cable de corriente del receptor IR.
Conecto el cable de datos a la protoboard y con ello el pin 3 de la placa.
3 Conectamos el led.
Pinchamos el led en la protoboard y al pin 4 del arduino pero le ponemos una resitencia de 470 oms ente los 5,5 y el positivo del led (pata larga), el negativo lo conectamos a masa.
Instalando una librería nuevo en arduino.
Descargamos la librería de este página
https://github.com/shirriff/Arduino-IRremote
Y la descomprimimos en la carpeta donde intalamos arduino y dentro de "libraries"
Ahora entramos en la carpeta IRremote y abrimos con el block de notas el archivo "remoteint.h"
En ese archivo cambiamos la linea que pone
#include <WProgram.h>
Por
#include <Arduino.h>
Esto es porque la librería se creo hace mucho. Antes del sistema moderno de arduino.
Conectamos arduino a nuestro puerto USB del PC. Y colocamos el siguiente código.
//incluimos la librería de IR#include <IRremote.h>#include <IRremoteInt.h>//poner IR en marchaint RECV_PIN = 3; //Definimos el pin donde tiene que esta el IRIRrecv irrecv(RECV_PIN);decode_results results;//declaramos variableint ValorIR=0; //declramos variable almacen valor ir//Preparamos el setupvoid setup(){Serial.begin(9600); //Ponemos el puerto serie a 9600irrecv.enableIRIn(); // el receptor ir en marcha}//definimos una función llamada "leerIR" esto nos ayuda a que en el futuro podamos reutilizarla.//no tiene parámetros de entra y devuelve un INTint leerIR(){if (irrecv.decode(&results)) { // si recibe señal IRint lectura = results.value; //Guarda el valor de la señal en la variable lecturairrecv.resume(); // Recive siguiente valor IRSerial.println(lectura);return lectura; //devuelve lectura}}void loop() {ValorIR=leerIR(); //asignamos a esa variable el valor que devuelve lerIR}
Lo cargamos en arduino, abrimos el monitor serial y al pulsar un botón del mando a distancia nos dará un número diferente para cada tecla que pulsemos.
En mi caso la tecla 1 del mando a distancia da el código -9691. La 2 el -3571. El botón de arriba me da el 28815 y de de enter el 18615.
Quiero que el led se encienda cuando yo presione enter y se apague cuando lo vuelva a presionar.
Asi que cargamos el siguiente código en nuestro arduino
Y el resultado es el siguiente.//incluimos la librería de IR#include <IRremote.h>#include <IRremoteInt.h>//poner IR en marchaint RECV_PIN = 3; //Definimos el pin donde tiene que esta el IRIRrecv irrecv(RECV_PIN);decode_results results;//declaramos contanteint pinLed=4;//declaramos variableint ValorIR=0; //declramos variable almacen valor irint estadoLed=0;//Preparamos el setupvoid setup(){Serial.begin(9600); //Ponemos el puerto serie a 9600irrecv.enableIRIn(); // el receptor ir en marchapinMode(pinLed, OUTPUT); //definimos el pin del led como de salida}//definimos una función llamada "leerIR" esto nos ayuda a que en el futuro podamos reutilizarla.//no tiene parámetros de entra y devuelve un INTint leerIR(){if (irrecv.decode(&results)) { // si recibe señal IRint lectura = results.value; //Guarda el valor de la señal en la variable lecturairrecv.resume(); // Recive siguiente valor IRSerial.println(lectura);return lectura; //devuelve lectura}}void loop() {ValorIR=leerIR(); //asignamos a esa variable el valor que devuelve lerIRif (ValorIR==18615){ //comprobamos el codigo recibidoif (estadoLed==0){ //comprobamos si el led está encendidodigitalWrite(pinLed,HIGH); //lo encendemosestadoLed=1; //marcamos como que está encendido}else{ //si no está apgado es que esta endendicodigitalWrite(pinLed,LOW); //lo apagamoestadoLed=0; //marcamos como apagado}}}
Evidentemente encender y apagar un led no es una cosa que sea muy meritoria. Pero hemos visto como capturar una tecla de un mando IR. Ahora la imaginación al poder.
¿Un juego de luces led de arbol de navidad que cambiemos con el mando de la tele?
¿Un coche controlado por IR)
¿Encender una luz, o cafetera, o riego eléctrico con un mando añadiendo un rele?
Esa será la siguiente entrega.