P3: Semáforo interactivo

Creación de un semáforo temporizado que puede pausarse mediante un pulsador.

Semáforo interactivo

Qué vas a repasar en este proyecto

En este proyecto combinaremos lo aprendido en las tres lecciones anteriores:

  • Lectura y configuración de un pulsador.
  • Eventos e interrupciones al pulsar y soltar.
  • Uso de un timer para ejecutar una tarea periódica.
  • Variables para recordar el estado actual.

Requisitos previos

Este proyecto pone en práctica los conceptos aprendidos en L7: El pulsador, L8: El pulsador (2) y L9: El timer.

Enunciado

Construye un semáforo con un LED RGB que cambie automáticamente cada dos segundos:

  1. Rojo.
  2. Verde.
  3. Amarillo.
  4. Rojo otra vez.

Añade un pulsador con esta función:

  • Al pulsarlo, el semáforo se pausa y conserva el color actual.
  • Al soltarlo, el semáforo vuelve a funcionar.

Antes de empezar

El programa tendrá dos tipos de eventos independientes:

  • El evento del timer cambia el color.
  • Los eventos del botón deshabilitan o habilitan el timer.

La variable Paso recordará qué color debe mostrarse en la siguiente activación.

Pistas

Consulta estas pistas solo si te hace falta. ¡Primero inténtalo sin mirar!

Ver pistas
  • Conecta el LED RGB a GPIO16, GPIO17 y GPIO18.
  • Conecta el pulsador a GPIO4 y GND.
  • Crea una variable Paso con valor inicial 0.
  • Crea un timer Ritmo que salte cada 2 segundos.
  • Usa el evento del timer para pasar por rojo, verde y amarillo.
  • En el evento ON del botón, pon Ritmo a deshabilitado.
  • En el evento OFF, vuelve a habilitarlo.

Solución

Ver solución

Materiales

  • Placa de desarrollo ESP32.
  • Placa de expansión BatSTEM.
  • Cable de conexión USB.
  • Placa de prototipos.
  • LED RGB de 4 patas y cátodo común.
  • 3 resistencias de 100 Ohm.
  • Pulsador.
  • Cables de conexión.

Esquema electrónico

Montaje

  1. Conecta GND a la línea azul de la placa de prototipos.
  2. Coloca el LED RGB con cada pata en una línea diferente.
  3. Conecta su pata común a GND.
  4. Conecta R a GPIO16, G a GPIO17 y B a GPIO18, cada canal mediante una resistencia de 100 Ohm.
  5. Coloca el pulsador cruzando el canal central.
  6. Conecta un terminal del pulsador a GPIO4 y el otro a GND.
  7. Conecta la placa al ordenador.

Programa

En el bloque configuración:

  1. Crea un LED RGB llamado MiLEDRGB en GPIO16, GPIO17 y GPIO18.
  2. Crea un botón llamado MiBoton conectado a GPIO4.
  3. Crea la variable Paso con valor inicial 0.
  4. Crea el timer Ritmo, configúralo a 2 segundos y activa su inicio automático.

Después crea los tres eventos que aparecen en la captura:

En “cuando Ritmo salta”:

  1. Si Paso vale 0, muestra rojo y cambia Paso a 1.
  2. Si Paso vale 1, muestra verde y cambia Paso a 2.
  3. En cualquier otro caso, muestra amarillo y vuelve a poner Paso a 0.

En “cuando MiBoton cambie a ON”, deshabilita Ritmo.

En “cuando MiBoton cambie a OFF”, habilita Ritmo.

Comprueba que el color deja de cambiar mientras mantienes pulsado el botón y que la secuencia continúa al soltarlo.

Retos opcionales

  1. Cambia el ritmo del semáforo a 1 o 5 segundos.
  2. Añade un estado azul a la secuencia.
  3. Haz que el botón alterne entre pausa y marcha con una sola pulsación.
  4. Añade un segundo botón para reiniciar la secuencia desde rojo.
  5. Envía el color actual al monitor COM cada vez que salte el timer.

Resumen del proyecto

  • Hemos configurado y utilizado un pulsador.
  • Hemos reaccionado a los eventos de pulsar y soltar.
  • Hemos ejecutado una secuencia mediante un timer.
  • Hemos usado una variable para recordar el estado del semáforo.
  • Hemos coordinado eventos independientes dentro de un mismo programa.