Semáforo con Arduino v1.0.0

¿Les ha surgido alguna vez la necesidad de construir un semáforo con Arduino? El siguiente artículo tratará de explicar como construir un sencillo semáforo para diferentes propósitos.

A continuación les muestro cómo construir un semáforo con Arduino. En la Universidad tenemos de vez en cuando presentaciones orales que requieren que se controle el tiempo disponible para cada exposición. Para ello se ha diseñado un semáforo que le indica a los expositores el tiempo que les queda disponible. Mientras la luz esté de color verde tendrán tiempo para seguir hablando. Cuando falte 2 minutos la luz cambiará a amarilla y en el momento que el tiempo expire se encenderá la luz roja.

El circuito es muy sencillo. Lo haré en base a LEDs.

Semaforo con Arduino

Los LEDs pueden ser remplazados por luces piloto, que fueron las que utilicé para mi diseño, ya que son visibles desde una mayor distancia. Estas luces las podemos conseguir a un bajo precio en cualquier ferretería.

Semáforo con Arduino 20141222_172608

Le he colocado un interruptor y un botón de reset (rojo). Debido a que, como ya habré explicado,  no será usado como semáforo de tráfico sino como un indicador de tiempo, necesito algo que me permita regresar la cuenta a cero. Si en vez de los LED se utilizarán luces piloto, como en mi caso, no se requiere la resistencia de 470Ω y sólo se procedería a conectar la lámpara entre los 12 voltios y el colector del transistor.

La alimentación del circuito se lleva a cabo por medio de un adaptador AC/DC de 12 voltios y 700 mA. Lo he tomado de un router antiguo que ya no utilizo (ya saben, es bueno reciclar).

20141222_172617

20141222_172626

Para la versión 2.0 estoy planeando colocarle un puerto USB en los laterales para tener acceso al microcontrolador interno y modificar la programación. Por medio de Java le permitiré al usuario cambiar el comportamiento del dispositivo con una GUI.

La programación de este dispositivo la pueden encontrar en nuestro repositorio de Github:

Descargar Código

Nótese que no he utilizado la función delay para el control del tiempo, sino que he basado mi algoritmo en el conteo del tiempo a través de la función millis() y por medio del método TimeRelatedEvents(). Este es un buen ejercicio para los que desean desarrollar sus habilidades con el Arduino, debido a que si utilizan el método delay “congelarían” el flujo del algoritmo y si por alguna razón se desea “resetear” el dispositivo al pulsar el botón rojo, no lo lograríamos ya que Arduino no sería capaz de detectar el estado HIGH en el pin 4.

Le he agregado la posibilidad de que el conteo del tiempo pueda ser guardado en la memoria interna, la EEPROM. Esto hace que el tiempo no se resetee cuando se apaga el dispositivo, sino que es necesario presionar el botón de “reset”.

Por último les dejo un video con el dispositivo funcionando:

Espero sus comentarios.

¿Te gustó? ¡Comparte!Share on LinkedInShare on FacebookTweet about this on TwitterEmail this to someoneShare on RedditShare on TumblrShare on Google+Pin on PinterestBuffer this page