P3: Semáforo interactivo
Etiquetas:
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:
- Rojo.
- Verde.
- Amarillo.
- 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
Consulta la solución solo si ya has intentado resolver el proyecto. Puedes usar otros pines o tiempos si el comportamiento final es el mismo.
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

- Conecta GND a la línea azul de la placa de prototipos.
- Coloca el LED RGB con cada pata en una línea diferente.
- Conecta su pata común a GND.
- Conecta R a GPIO16, G a GPIO17 y B a GPIO18, cada canal mediante una resistencia de 100 Ohm.
- Coloca el pulsador cruzando el canal central.
- Conecta un terminal del pulsador a GPIO4 y el otro a GND.
- Conecta la placa al ordenador.
Programa
En el bloque configuración:
- Crea un LED RGB llamado MiLEDRGB en GPIO16, GPIO17 y GPIO18.
- Crea un botón llamado MiBoton conectado a GPIO4.
- Crea la variable Paso con valor inicial 0.
- 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”:
- Si Paso vale 0, muestra rojo y cambia Paso a 1.
- Si Paso vale 1, muestra verde y cambia Paso a 2.
- 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
- Cambia el ritmo del semáforo a 1 o 5 segundos.
- Añade un estado azul a la secuencia.
- Haz que el botón alterne entre pausa y marcha con una sola pulsación.
- Añade un segundo botón para reiniciar la secuencia desde rojo.
- 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.