Está en la página 1de 7

Control de LED via IR

En este pequeo tutorial controlaremos un LED con un viejo mando infrarojo que tena de un TDT
roto. Adems aprovecharemos el receptor IR del mismo.
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 fsica.
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 estn 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.

Software.
Instalando una librera nuevo en arduino.
Descargamos la librera de este pgina
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 librera se creo hace mucho. Antes del sistema moderno de arduino.
Conectamos arduino a nuestro puerto USB del PC. Y colocamos el siguiente cdigo.
//incluimos la librera de IR
#include <IRremote.h>
#include <IRremoteInt.h>
//poner IR en marcha
int RECV_PIN = 3; //Definimos el pin donde tiene que esta el IR
IRrecv irrecv(RECV_PIN);
decode_results results;
//declaramos variable
int ValorIR=0; //declramos variable almacen valor ir
//Preparamos el setup
void setup()
{
Serial.begin(9600); //Ponemos el puerto serie a 9600
irrecv.enableIRIn(); // el receptor ir en marcha
}
//definimos una funcin llamada "leerIR" esto nos ayuda a que en el futuro podamos reutilizarla.
//no tiene parmetros de entra y devuelve un INT
int leerIR(){
if (irrecv.decode(&results)) { // si recibe seal IR
int lectura = results.value; //Guarda el valor de la seal en la variable lectura
irrecv.resume(); // Recive siguiente valor IR
Serial.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 botn del mando a distancia nos
dar un nmero diferente para cada tecla que pulsemos.

En mi caso la tecla 1 del mando a distancia da el cdigo -9691. La 2 el -3571. El botn 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 cdigo en nuestro arduino
//incluimos la librera de IR
#include <IRremote.h>
#include <IRremoteInt.h>
//poner IR en marcha
int RECV_PIN = 3; //Definimos el pin donde tiene que esta el IR
IRrecv irrecv(RECV_PIN);
decode_results results;
//declaramos contante
int pinLed=4;
//declaramos variable
int ValorIR=0; //declramos variable almacen valor ir
int estadoLed=0;
//Preparamos el setup
void setup()
{
Serial.begin(9600); //Ponemos el puerto serie a 9600
irrecv.enableIRIn(); // el receptor ir en marcha
pinMode(pinLed, OUTPUT); //definimos el pin del led como de salida
}

//definimos una funcin llamada "leerIR" esto nos ayuda a que en el futuro podamos reutilizarla.
//no tiene parmetros de entra y devuelve un INT
int leerIR(){
if (irrecv.decode(&results)) { // si recibe seal IR
int lectura = results.value; //Guarda el valor de la seal en la variable lectura
irrecv.resume(); // Recive siguiente valor IR
Serial.println(lectura);
return lectura; //devuelve lectura
}
}
void loop() {

ValorIR=leerIR(); //asignamos a esa variable el valor que devuelve lerIR


if (ValorIR==18615){ //comprobamos el codigo recibido
if (estadoLed==0){ //comprobamos si el led est encendido
digitalWrite(pinLed,HIGH); //lo encendemos
estadoLed=1; //marcamos como que est encendido
}
else{ //si no est apgado es que esta endendico
digitalWrite(pinLed,LOW); //lo apagamo
estadoLed=0; //marcamos como apagado
}
}
}
Y el resultado es el siguiente.

También podría gustarte