Semáforo con MicroPython
Simular el funcionamiento de un Semáforo con MicroPython es uno de los proyectos clásicos en la iniciación con microcontroladores que hacen uso de este firmware. En ésta ocasión te voy a mostrar cómo puedes controlar tres semáforos funcionando en secuencia, a la cual puedes realizar modificaciones a tu gusto.
Materiales
- 1x Placa Raspberry Pi Pico, Esp32 o cualquier placa con micropython.
- 3x Diodo emisor de luz roja.
- 3x Diodo emisor de luz amarilla.
- 3x Diodo emisor de luz verde.
- 9x Resistor 330 Ohm.
- 1x Protoboard.
- Cables de conexión.
Circuito
Para el montaje de este circuito se utilizó una placa Raspberry Pi Pico, si utilizas otra placa debes verificar la disponibilidad o modificar los pines utilizados en este diseño.
Colocamos los leds y los resistores en la protoboard, posteriormente los conectamos a la placa de la siguiente manera:
- Semáforo 1:
Rojo = GP2
Amarillo = GP3
Verde = GP4 - Semáforo 2:
Rojo = GP6
Amarillo = GP7
Verde = GP8 - Semáforo 3:
Rojo = GP10
Amarillo = GP11
Verde = GP12
Sketch en MicroPython
Para la programación de este sketch se utilizó una placa Raspberry Pi Pico, si utilizas otra placa debes verificar la disponibilidad o modificar los pines utilizados.
from machine import Pin import time TIEMPO_1 = 3000 TIEMPO_2 = 1000 rojo_1 = Pin(2, Pin.OUT) amarillo_1 = Pin(3, Pin.OUT) verde_1 = Pin(4, Pin.OUT) rojo_2 = Pin(6, Pin.OUT) amarillo_2 = Pin(7, Pin.OUT) verde_2 = Pin(8, Pin.OUT) rojo_3 = Pin(10, Pin.OUT) amarillo_3 = Pin(11, Pin.OUT) verde_3 = Pin(12, Pin.OUT) def semaforo_1(rojo, amarillo, verde): rojo_1.value(rojo) amarillo_1.value(amarillo) verde_1.value(verde) def semaforo_2(rojo, amarillo, verde): rojo_2.value(rojo) amarillo_2.value(amarillo) verde_2.value(verde) def semaforo_3(rojo, amarillo, verde): rojo_3.value(rojo) amarillo_3.value(amarillo) verde_3.value(verde) for i in range(3): semaforo_1(0, 1, 0) semaforo_2(0, 1, 0) semaforo_3(0, 1, 0) time.sleep_ms(500) semaforo_1(0, 0, 0) semaforo_2(0, 0, 0) semaforo_3(0, 0, 0) time.sleep_ms(500) while 1: semaforo_1(0, 0, 1) semaforo_2(1, 0, 0) semaforo_3(1, 0, 0) time.sleep_ms(TIEMPO_1) semaforo_1(0, 1, 0) semaforo_2(1, 0, 0) semaforo_3(1, 0, 0) time.sleep_ms(TIEMPO_2) semaforo_1(1, 0, 0) semaforo_2(0, 0, 1) semaforo_3(1, 0, 0) time.sleep_ms(TIEMPO_1) semaforo_1(1, 0, 0) semaforo_2(0, 1, 0) semaforo_3(1, 0, 0) time.sleep_ms(TIEMPO_2) semaforo_1(1, 0, 0) semaforo_2(1, 0, 0) semaforo_3(0, 0, 1) time.sleep_ms(TIEMPO_1) semaforo_1(1, 0, 0) semaforo_2(1, 0, 0) semaforo_3(0, 1, 0) time.sleep_ms(TIEMPO_2)
¿Cómo funciona el Sketch?
El funcionamiento del programa es relativamente sencillo. Cada semáforo tiene asignada una función la cual se encarga de controlar los leds. A esta función deben ingresar tres parámetros los cuales se detallan a continuación:
- El primer parámetro controla el encendido y apagado del led rojo.
- El segundo parámetro controla el encendido y apagado del led amarillo.
- El tercer parámetro controla el encendido y apagado del led verde.
Al inicio del programa los leds de color amarillo parpadearan 3 veces en intervalos de 500ms para comprobar que los tres semáforos estén conectados correctamente, posteriormente comenzara el ciclo de trabajo de un semáforo, el cual funciona de la siguiente manera:
- Ciclo 1: Se encenderá el led verde del semáforo 1, en los otros semáforos se encenderán los leds rojos.
Semáforo 1: Verde
Semáforo 2: Rojo
Semáforo 3: Rojo - Tiempo de espera: Se espera un tiempo de retardo de 3 segundos.
- Ciclo 2: Se encenderá el led amarillo del semáforo 1, los otros semáforos mantendrán los leds rojos encendidos.
Semáforo 1: Amarillo
Semáforo 2: Rojo
Semáforo 3: Rojo - Tiempo de espera: Se espera un tiempo de retardo de 1 segundo.
- Ciclo 3: Se encenderá el led verde del semáforo 2, en los otros semáforos se encenderán los leds rojos.
Semáforo 1: Rojo
Semáforo 2: Verde
Semáforo 3: Rojo - Tiempo de espera: Se espera un tiempo de retardo de 3 segundos.
- Ciclo 4: Se encenderá el led amarillo del semáforo 2, los otros semáforos mantendrán los leds rojos encendidos.
Semáforo 1: Rojo
Semáforo 2: Amarillo
Semáforo 3: Rojo - Tiempo de espera: Se espera un tiempo de retardo de 1 segundo.
- Ciclo 5: Se encenderá el led verde del semáforo 3, en los otros semáforos se encenderán los leds rojos.
Semáforo 1: Rojo
Semáforo 2: Rojo
Semáforo 3: Verde - Tiempo de espera: Se espera un tiempo de retardo de 3 segundos.
- Ciclo 6: Se encenderá el led amarillo del semáforo 3, los otros semáforos mantendrán los leds rojos encendidos.
Semáforo 1: Rojo
Semáforo 2: Rojo
Semáforo 3: Amarillo - Tiempo de espera: Se espera un tiempo de retardo de 1 segundo y comienza nuevamente desde el ciclo uno.