Semáforo con MicroPython

Contenido:

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.

semaforo con micropython
Figura 1: Circuito con la Placa Raspberry Pi Pico.

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.

Deja un comentario