from machine import Pin
from time import sleep
# --------------------------------
# ENTRADA
# --------------------------------
boton = Pin(14, Pin.IN, Pin.PULL_DOWN)
# --------------------------------
# LED RGB - CÁTODO COMÚN
# --------------------------------
rojo = Pin(16, Pin.OUT)
verde = Pin(17, Pin.OUT)
azul = Pin(18, Pin.OUT)
# --------------------------------
# ESTADOS
# --------------------------------
ROJO = 0
VERDE = 1
AMARILLO = 2
estado = ROJO
# Estado anterior del botón
boton_anterior = 0
# --------------------------------
# MÁQUINA DE ESTADOS
# --------------------------------
while True:
# Leer botón
boton_actual = boton.value()
# --------------------------------
# TRANSICIONES
# --------------------------------
if boton_actual == 1 and boton_anterior == 0:
if estado == ROJO:
estado = VERDE
elif estado == VERDE:
estado = AMARILLO
elif estado == AMARILLO:
estado = ROJO
# Anti-rebote
sleep(0.05)
# Guardar estado del botón
boton_anterior = boton_actual
# --------------------------------
# SALIDAS DE MOORE
# --------------------------------
if estado == ROJO:
rojo.value(1)
verde.value(0)
azul.value(0)
elif estado == VERDE:
rojo.value(0)
verde.value(1)
azul.value(0)
elif estado == AMARILLO:
rojo.value(1)
verde.value(1)
azul.value(0)
sleep(0.01)