jueves, 19 de octubre de 2017

Programación proyecto SEMÁFORO

Buenos días.

Seguimos avanzando en el proyecto de programación en arduino, fabricación de maqueta y aplicación móvil de control de un semáforo. En el siguiente enlace podéis descargar las fases del proyecto a las que hemos añadido en una nueva página las rúbricas de evaluación de cada una de las partes del proyecto.


En un principio lo más sencillo es programar el semáforo usando la función <esperar> o <delay>:

En el siguiente ejemplo vamos a ver como hacerlo para una configuración de tiempos de encendido como la siguiente:

Estado de la luz de los coches         Estado de la luz de peatones        Tiempo de duración
              VERDE                                                 ROJO                                         8s
              ÁMBAR                                                ROJO                                         4s (en los 2 últimos segundos la luz ambar de coches deberá parpadear 4 veces)
              ROJO                                                   VERDE                                        6s (en los 2 últimos segundos la luz verde de peatones deberá parpadear 4 veces)
Para ello será necesario conectar correctamente 5 leds a nuestra controladora (recordar que siempre hay que dejar libres los pines 0 y 1 que son los necesarios para comunicarnos con la placa y cargar los programas por ejemplo) en los pines que después serán los mismos que usaremos en bitbloq para indicar la ubicación de nuestros leds tal y como puede verse en el ejemplo de la imágen.

Posteriormente pasaremos a la programación de la secuencia de encendido utilizando la función <esperar> o <delay> en inglés. Un ejemplo del código puede verse en la siguiente imagen.





En la parte de programación vamos a dar el salto de usar la función ESPERAR de Bitbloq a programar usando Obtener tiempos de ejecución, lo que nos permite tener un mayor control sobre el programa ya que la función esperar bloquea la programación y por tanto la recepción de información por parte de sensores o el control de las respuestas del semáforo.

Este nivel de programación nos llevará a trabajar con las diferentes opciones de código de arduino. Por un lado la Declaración de Variables, por otro Las Instrucciones iniciales (Setup) que se ejecutan una sola vez al iniciar el programa y por último el Bucle principal (Loop) en el que desarrollaremos la parte central del código que se repite en modo Loop.

A continuación dejamos las imágenes de una de las opciones de programación en bitbloq del semáforo en modo sencillo, alternando de rojo durante 8 segundos, a ambar durante 4 segundos y por último a verde durante 6 segundos usando <Obtener tiempo de ejecución>.

En esta opción de programación se juega con las variables TIEMPO y TIEMPO_RESET para crear un ciclo de 18000ms en el que se van secuenciando las luces:







Otra opción es utilizar variables de estado que nos indiquen que luz está encendida y con esa variable de estado y el control del tiempo poder decidir cuando apagarla y encender la siguiente. En este código ya aparece la secuencia correcta verde coches (rojo peatones) - ambar coches (rojo peatones) - rojo coches (verde peatones):




Existen más soluciones como la de usar un contador que vaya aumentando cada 1000ms... Lo fundamental es dar el salto a programar usando los tiempos de ejecución del programa y así evitar usar la función delay/esperar.

En las siguiente imágenes puede verse como incluir las luces de peatones y el parpadeo:




Parpadeo del ambar del coches:


Parpadeo del verde de peatones:



SONIDO EN EL SEMÁFORO:

El siguiente paso de este modo es el de añadir el sonido del zumbador a la programación. En esta imagen puede verse la parte de código correspondiente al apagado y encendido del zumbador. En la siguiente imagen puede verse que añadimos en arduino el zumbador como un led ya que queremos controlar su encendido como con los parpadeos usando <obtener tiempo de ejecución>.


Recordar que en el tema 2 está la imagen de como se conecta un zumbador a la protoboard y a arduino.

Por tanto el código de sonido intermitente será similar a los que ya hemos visto de parpadeo.


Por último para evitar que el zumbador pueda quedar activado en caso de que la luminosidad baje cuando está sonando hemos añadido una condición al inicio del programa.
Tendremos que añadir un LDR. 



Recordar que en el tema 2 está la imagen de como se conecta un LDR a la protoboard y a arduino.



Finalmente para programarlo tendremos que crear una nueva variable, en el ejemplo llamada "luminosidad" que guardará el valor del LDR en cada momento y lo incluirá como condición para que el sonido se produzca solo de día, ya que de noche podría ser excesivamente molesto.

En el ejemplo el valor de luminosidad que marca el cambio de día a noche es que el sensor de un valor de más de 40. Este valor no es fijo, dependerá de la resistencia que pongamos.



En el ejemplo el valor de luminosidad que marca el cambio de día a noche es que el sensor de un valor de más de 40. Este valor no es fijo, dependerá de la resistencia que pongamos y de la sensibilidad del LDR que estemos usando. En un futuro aprenderemos a ajustarlo con nuestro teléfono móvil, pero de momento aprenderemos a obtener este valor usando la información que arduino puede enviar al monitor serie mediante el puerto serie.
Primero tendremos que añadir el puerto serie como componente.



Posteriormente en la programación añadir el envío de los datos que necesitemos al puerto serie:



Y por último, tras cargar el programa en placa, abrir el monitor serie para comprobar los resultados.



En el siguiente tema profundizaremos en la programación incluyendo los parpadeos, y algunos otros componentes al semáforo.

Un saludo,
Raúl.


lunes, 2 de octubre de 2017

Conexiones arduino para el proyecto SEMÁFORO

Buenos días.

En esta entrada haremos una recopilación de imágenes y algún vídeo explicativo sobre la conexión de los componentes para nuestro proyecto del semáforo.

Recuperamos antes de empezar el enlace par la guía con las diferentes fases del proyecto:


Para poder hacer este proyecto necesitaremos por un lado conectar los leds:

Tal y como dicen en esta web:

"Hay dos tipos de personas, los que conectan los LEDs con resistencia y los que no… y solo una de ellas lo está haciendo bien."

Es por eso que nosotros lo vamos a hacer bien, es decir, con resistencia.



Para recordar el código de colores de la resistencia podemos usar estas imágenes en función de que lleve 3 o 4 lineas de colores + la tolerancia.




A continuación tendremos que conectar el zumbador:



El siguiente componente que tendremos que conectar es el LDR, la resistencia variable que nos permitirá saber si es de día o de noche.



Para profundizar más sobre la conexión del LDR y entender porque se conecta de esta manera mediante un divisor de tensión es muy práctica la información de la siguiente web.



El último componente que será necesario conectar es el pulsador:


Conectar los componentes es una fase que parece que tiene menor importancia que la de programar, pero sin duda es realmente importante prestar la máxima atención y entender porque se conectan los componentes de esta manera para evitar fallos que puedan dañar a la placa o los componentes y además nos puedan hacer dar mil vueltas a la programación sin darnos cuenta de que el problema no es de código si no de instalación y conexión.

Un saludo,
Raúl.