Tarea

El objetivo de este ejercicio es empezar a conocer el funcionamiento básico de la placa Arduino y su interacción con el mundo digital a través de una herramienta de programación por bloques del tipo Scratch for Arduino (S4A) o mBlock.

s4a

El objetivo de este ejercicio es crear una simulación en el mundo digital (pantalla del ordenador mediante S4A o mBlock) y en el mundo físico (mediante los elementos electrónicos y Arduino) de un semáforo. Nuestro semáforo debe constar de 3 LED (verde, amarillo y rojo) y un altavoz que se debe encender de manera consecutiva de modo que: el LED rojo permanezca encendido 8 segundos, el LED amarillo realizará 5 intermitencias de 1 segundo cada una de ellas (1 segundo con luz, 1 segundo sin luz) y el LED verde se encenderá 10 segundos para completar este ciclo haciendo el proceso inverso (otra vez el amarillo intermitente para acabar con el rojo). Mientras se produce este efecto en el mundo físico debemos reproducir el efecto de manera que tambien se muestre sobre la pantalla de Scratch.

En este artículo solo se tratará la información sobre la electrónica/programación del proyecto. Si quieres la información completa incluyendo la parte mecánica pulsa sobre la imagen o sobre el siguiente enlace (información completa pdf).
portada2

Material necesario

Nombre Imagen Descripción
Placa Arduino Uno arduino uno large comp Placa Arduino Uno (o cualquier otra versión) con el firmware necesario para poder usar S4A (descargar firmware) cargado en la placa.
Protoboard, breadboard o placa de conexiones protoboard Placa de conexiones o protoboard que usaremos en el montaje de circuitos eléctrico-electrónico para ahorrar y simplificar el cableado. Para aprender algo más sobre el uso de este dispositivo pulsa aquí
3 diodos LED de colores diodosled Como sabemos los diodos LED nos permiten obtener luz a partir de muy poca energía eléctrica.
1 Altavoz o zumbador piezoeléctrico
altavoz Un buzzer o un altavoz son dispositivos que permiten convertir una señal eléctrica en una onda de sonido. Estos dispositivos no disponen de electrónica interna, por lo que tenemos que proporcionar una señal eléctrica para conseguir el sonido deseado. En nuestro proyecto se usará para emitir una señal sonora que permita avisar cuando el semáforo se va a poner en verde o en rojo.
1 resistencia de 220 Ohmios resistencia La resistencia de 220 ohmios se usa para impedir que los LED reciban demasiada intensidad (debida a su baja resistencia interna) y puedan funcionar de manera incorrecta o  sobrecalentarse y dejar de ser operativos.
Cables de conexiones entre los componentes, la placa de pruebas y Arduino cables Estos cables nos permiten conectar de manera sencilla todos los elementos del circuito.

Circuito eléctrico

En la sesión anterior vimos cómo conectar correctamente un LED. Ahora vamos a complicar un poco el circuito conectando tres diodos LED que se encenderán y apagarán para construir nuestro propio semáforo. Además introduciremos el efecto sonoro mediante la presencia de un altavoz o zumbador piezoeléctrico.

Si hemos entendido el circuito con un sólo LED es fácil entender también este circuito. En nuestro caso como vamos a encender/apagar LED y el altavoz se trata de una salida digital por lo que debemos conectar los 3 LED y el altavoz a los pines digitales 13 (led rojo), 12 (led amarillo),11 (led verde) y 10 (altavoz) de Arduino tal y como se muestra en la imagen siguiente. Si se desea ver el circuito en funcionamiento solo hay que pinchar sobre el siguiente enlace..

En este caso hemos de tener en cuenta las siguientes consideraciones:
  • Hemos conectado cada uno de los diodos LED a diferentes salidas digitales para poder gobernarlos de forma independiente. Si todos estuviesen conectados al mismo pin solo se podrían encender/apagar como un conjunto y no de manera independiente.
  • Sólo necesitamos una resistencia porque está en serie con los tres diodos. La corriente que circule por cualquiera de ellos lo hará también por la resistencia, de forma que protegerá a los tres de quemarse.
  • Cerramos el circuito conectando la resistencia a GND.

Código mBlock

Como ya sabemos para poder usar mBlock con nuestra placa Arduino debemos siempre actualizar sobre la placa un firmware que nos permita la interacción entre mBlock y nuestro controlador Arduino. Para una descripción detallada de los pasos de conexión sigue este enlace...

Una vez que hayamos conseguido que el entorno mBlock reconozca nuestra placa debemos cumplir nuestro reto haciendo uso de la programación en mBlock y generar un nuevo fichero que guardaremos con el nombre de "semáforo.sb" que cumplirá las diferentes funciones del programa. A continuación se muestra una posible solución usando mBlock para la parte física, dejando al lector la implementación de la parte virtual de la pantalla para la que usará las imágenes que se muestra a continuación (se muestre en pantalla un semáforo al que se le van encendiendo/apagando las luces)...

codigomBlock

semafororojo
semafororojo
semafororojo
semafororojo

Código programa Arduino

Arduino Code
  1. // Declaración de variables y constantes
  2.  
  3. #define ledRojo 13 // Pin en el que se conectará el LED rojo
  4. #define ledAmarillo 12 // Pin en el que se conectará el LED amarillo
  5. #define ledVerde 11 // Pin en el que se conectará el LED verde
  6. #define zumbadorPiezo 10 // Pin en el que se conectará el zumbador piezoelectrico
  7.  
  8. #define tiempoLedRojo 8000 // Tiempo encendido del LED rojo
  9. #define tiempoLedAmarillo 1000 // Tiempo que permanece el LED amarillo intermitente en ms
  10. #define tiempoLedVerde 10000 // Tiempo encendido del LED verde en ms
  11.  
  12.  
  13. // La función setup solo se ejecuta una vez al inicio del programa
  14. void setup()
  15. {
  16. // Con pinMode inicializamos los 4 pines 13,12 11 y 10 como salida (OUTPUT) digital
  17. pinMode(ledRojo, OUTPUT);
  18. pinMode(ledVerde, OUTPUT);
  19. pinMode(ledAmarillo, OUTPUT);
  20. pinMode(zumbadorPiezo, OUTPUT);
  21. }
  22.  
  23. // La función loop se ejecuta de manera indefinida
  24. void loop()
  25. {
  26. // En primer lugar se enciende el LED rojo durante 8 segundos
  27. digitalWrite(ledRojo, HIGH);
  28. delay(tiempoLedRojo);
  29. digitalWrite(ledRojo, LOW);
  30.  
  31. // Ahora parpadea el LED amarillo durante 5 ocasiones
  32. // Para ello usaremos un bucle for que se repita cinco veces
  33. for (int i=0; i <5; i++)
  34. {
  35. digitalWrite(ledAmarillo, HIGH);
  36. digitalWrite(zumbadorPiezo, HIGH);
  37. delay(tiempoLedAmarillo);
  38. digitalWrite(ledAmarillo, LOW);
  39. digitalWrite(zumbadorPiezo, LOW);
  40. delay(tiempoLedAmarillo);
  41. }
  42.  
  43. // Se enciende el LED verde durante 10 segundos
  44. digitalWrite(ledVerde, HIGH);
  45. delay(tiempoLedVerde);
  46. digitalWrite(ledVerde, LOW);
  47.  
  48. // Otra vez parpadea el LED amarillo durante 5 ocasiones
  49. // Para ello usaremos un bucle for que se repita cinco veces
  50. for (int i=0; i <5; i++)
  51. {
  52. digitalWrite(ledAmarillo, HIGH);
  53. digitalWrite(zumbadorPiezo, HIGH);
  54. delay(tiempoLedAmarillo);
  55. digitalWrite(ledAmarillo, LOW);
  56. digitalWrite(zumbadorPiezo, LOW);
  57. delay(tiempoLedAmarillo);
  58. }
  59. }
  60.  
Spanish English French German Italian Portuguese Russian

Artículos