¿Como funciona un semáforo? Parte 1 Visualino y Arduino

Vamos a realizar uno de los ejercicios más típicos y asequibles de la programación y la electrónica, un semáforo.

Creo que casi cualquiera que ha realizado ejercicios de tecnología, ha trabajado en algún punto el funcionamiento del semáforo. Que yo recuerde, lo he realizado desde con temporizadores y relés, hasta con caros PLCs. Pasando por puertas lógicas y microcontroladores.

Si buscamos ejercicios por Internet de Arduino, Raspberry pi, Scratch u otros similares, el semáforo, es uno de los que nos encontraremos.

Y aquí como ejemplo inicial a los programas que hemos tratado estas ultimas semanas, vamos a utilizarlo para explicar el funcionamiento de Visualino, Arduino y en una segunda parte más extensa, Scratch. También como complemento, usaremos Fritzing y Autodesk 123d circuits.

He realizado la practica junto a una pequeña de 7 años y puedo asegurar que es asequible, aunque tiene bastantes puntos aburridos, mejor tenerlo preparado antes todo.

El material

Esta primera parte, es un ejercicio practico real, en el que vamos a encender un semáforo de “verdad”. Empiezo por el semáforo físico, porque el siguiente ejemplo, con Scratch, es bastante más complicado, aunque igualmente asequible.

Es necesario el siguiente material.
Arduino uno o equivalente compatible

Protoboard, no es imprescindible

Led verde

Led rojo

Led amarillo o ámbar

3 resistencias de 220ohms

Un equipo con Visualino instalado donde conectar nuestra Arduino.

Importante: un cable USB para conectar la placa al ordenador y un poco de ganas.

En este ejemplo, se ha usado por completo una Raspberry pi, aunque vale cualquier ordenador. Si hemos usado una Raspberry pi, es por querer remarcar las posibilidades que tiene, y hacer sentir al pequeño que realice la practica que usa algo de su tamaño. En una tercera fase se podría realizar la función que vamos hacer con Arduino con una Raspberry, pero ya llegará.

Montaje

La mejor manera de empezar es montando el diseño en una protoboard. Podemos usar Fritzing para tener un esquema de lo que queremos montar, o usar 123d Autodesk para poder probarlo.
Si no disponemos de una placa Arduino, podemos usar el programa de Autodesk para probarlo. El ejercicio es muy sencillo, y fácil de copiar y pegar en el apartado de “code” del emulador. Yo os dejo mi versión en este enlace.

Aquí tenéis la imagen del esquema básico.

Captura de pantalla de 2016-05-19 21-04-27

Y el montaje en una placa protoboard que ya explique como se usaba.

Captura de pantalla de 2016-05-19 21-03-39
Explicación del montaje

Se usan tres salidas de la placa Arduino, los pines digitales como 12, 11 y 10. A cada uno le asignamos un color de Led.

12 rojo

11 ámbar

10 verde

Y colocamos los puentes.
Ahora lo importante, como colocar el led y porque se usa la resistencia. El Led tiene posición, ha de colocarse correctamente, como las pilas en el mando. Tiene dos patas, una larga y la otra corta. La corta debería ser el negativo. Y digo debería, porque hay fabricantes con mucho sentido del humor y deciden hacerlo al contrario, o sacar un lote con las patas iguales. En ese caso, la forma del led nos indica cual es el negativo, siendo este el del lado plano. Y si, también hay fabricantes que deciden hacer bromas con esto.
La resistencia es un protector del led, creo que es la mejor manera de entenderlo. Sirve para limitar la corriente máxima que pasara por el led. Si este concepto se nos escapa, es mejor tirar de wikipedia o similar y conocer la ley de ohm.

El caso es que normalmente este tipo de led, en mi caso 5mm, consumen cerca de 20mA que corresponde con una resistencia de 220ohms para la tensión de 5V de las salidas de la Arduino.
Con esto, y con la imagen del montaje tenemos suficiente para seguir con el siguiente paso.

El programa

Si he usado Visualino, es porque permite ir directo a lo que queremos hacer, sin necesidad de ponerse a declarar variables o indicar que pin hará que.

Si empezamos indicando que queremos que funcione para siempre y que queremos que el led Rojo se encienda, indicamos Pin 12 rojo en posición Alto. Podemos interpretar alto como 1 o como encendido. Si subimos este código a la placa, veremos que solo se enciende el led y ya está. Poco ejercicio hacemos. Así que le indicamos que se apague.
Pin 12 en posición bajo. Y al subirlo, vemos que no hace absolutamente nada.

Captura de pantalla de 2016-05-18 19-06-43Captura de pantalla de 2016-05-18 19-07-41
El problema es que se enciende y se apaga inmediatamente. El programa funciona tan rápidamente que no vemos que sucede. Así que hay que fijarle un temporizador. Y con ese temporizador ya tenemos la opción parpadeante del led rojo. En el ejemplo se ha puesto 4sg (4000mSg)

Captura de pantalla de 2016-05-18 19-09-31
Ahora el resto.

 Deberíamos continuar con el led verde, que se enciende de forma automática en cuanto se apaga el rojo. Así que lo ponemos a continuación y le damos el mismo tiempo 4000msg. El verde es el pin 10.

Captura de pantalla de 2016-05-18 19-12-01

Por ultimo, se repite para el ámbar, pero con menos tiempo 1000msg.

Captura de pantalla de 2016-05-18 19-12-54
Para realizar un semáforo de peatones, lo que tendríamos que tener en cuenta, es que el led Verde de los peatones tiene que parpadear, algo que ya hemos visto como hacer al principio del ejercicio, pero cambiando el tiempo. Pero hay un problema, el semáforo de los peatones no funciona al mismo tiempo que el de los coches, sino que hay pequeños retardos, entre el rojo de los peatones y el verde de los coches.
Si se tuviera que hacer varios cruces diferentes que no estuvieran sincronizados, nos daríamos cuenta en seguida que una placa Arduino se nos queda pequeña, al no disponer suficientes salidas.

Para eso están los multiplexores (o demultiplexores, según se vea), por si alguien quiere entretenerse un rato con ellos.

Todo este ejercicio puede probarse con 123d Circuits como he dicho, y es lo más sencillo que hemos podido probar en casa. Así que a ello.

3 comentarios sobre “¿Como funciona un semáforo? Parte 1 Visualino y Arduino

Deja un comentario