Proyecto Arduino 15. Hackeando un mando.

Esta semana he dejado aparte las prácticas del Starter Kit para intentar un ejercicio por mi cuenta.

El caso es que tengo un antiguo receptor de TDT con su mando a distancia y todo y he pensado en aprovechar el mando con el Arduino.

Primero intenté desmontar el TDT para extraer el receptor de infrarrojos (IR) pero no lo conseguí. En esas estaba cuando me acordé de las piezas del Cyborg que tengo medio desmontado. Con tan buena suerte que encontré un receptor de IR que se puede reciclar.

(Y por primera vez, el video que muestra el funcionamiento)

Le puse pilas frescas al mando y conecté el receptor IR al Arduino siguiendo las instrucciones que encontré en internet.Esquema IR

Me bajé también un programa para leer los códigos que envía el mando y me puse a probarlo.

Para completar la práctica, monté mi set de tres LEDs (rojo, ámbar y verde) y modifiqué el programa para encender cada LED con una la pulsación de una tecla del mando. Me costó un rato pero lo conseguí. Además empleé por primera vez en Arduino una estructura switch/case.

Este es el programa final:

/* +———————————————————-+
! ** A R D U I N O ** !
! PROGRAMA : CONTROL_IR !
! AUTOR : DAVID SANTAOLALLA !
! FECHA : 05/05/2015 !
! DESCRIPCION : CON MANDO DE INFRARROJOS RECICLADO USANDO !
! LOS BOTONES F1, F2, F3 Y F4 SE ENCIENDEN LOS LED ROJO !
! VERDE Y AMARILLO. CON F4 SE APAGAN TODOS. !
! !
! !
! !
+———————————————————-+
*/

#include <IRremote.h>

int IRpin = 11;
IRrecv irrecv(IRpin);
decode_results results;

const int F0= 1641400000;

const int F1= 1641423326;
const int F2= 1641453926;
const int F3= 1641478406;
const int F4= 1641415166;

const int Rojo = 3;
const int Ambar = 4;
const int Verde = 5;

int Valor = 0;
int Ledr = 0;
int Ledv = 0;
int Leda = 0;

void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
// Declaracion de pines de salida
pinMode(Rojo, OUTPUT);
pinMode(Ambar, OUTPUT);
pinMode(Verde, OUTPUT);

pinMode(13, OUTPUT);

digitalWrite(Verde, LOW);
digitalWrite(Ambar, LOW);
digitalWrite(Rojo, LOW);

}

void loop()
{
if (irrecv.decode(&results))
{
Serial.print(“Valor leido: “);
Serial.println(results.value); // Print the Serial ‘results.value’
Valor = results.value;

switch (Valor) {
// — ROJO —
case F1:
if (Ledr == 0) {
digitalWrite(Rojo, HIGH);
Ledr = 1;
}
else
{
digitalWrite(Rojo, LOW);
Ledr = 0;
}
break;
// — VERDE —
case F2:
if (Ledv == 0) {
digitalWrite(Verde, HIGH);
Ledv = 1;
}
else
{
digitalWrite(Verde, LOW);
Ledv = 0;
}
break;
// — AMBAR —
case F3:
if (Leda == 0) {
digitalWrite(Ambar, HIGH);
Leda = 1;
}
else
{
digitalWrite(Ambar, LOW);
Leda = 0;
}
break;

case F4:
digitalWrite(Verde, LOW);
digitalWrite(Ambar, LOW);
digitalWrite(Rojo, LOW);
Ledr = 0;
Ledv = 0;
Leda = 0;
}
digitalWrite(13, HIGH);
delay (100);
digitalWrite(13, LOW);
Valor = 0;

irrecv.resume(); // Receive the next value
}

}

Anuncios

Un comentario en “Proyecto Arduino 15. Hackeando un mando.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s