import machine
from machine import Pin, Timer
ledVerde = Pin(0, Pin.OUT)
ledRojo = Pin(3, Pin.OUT)
ledAmarillo = Pin(1, Pin.OUT)
slider = Pin(4, Pin.IN, Pin.PULL_UP)
# Variables globales
contador = 0
estado = 0
def Estado0():
ledRojo.value(1)
ledAmarillo.value(0)
ledVerde.value(0)
def Estado1():
ledRojo.value(1)
ledAmarillo.value(1)
ledVerde.value(0)
def Estado2():
ledRojo.value(0)
ledAmarillo.value(0)
ledVerde.value(1)
def Estado3():
ledRojo.value(0)
ledAmarillo.value(1)
ledVerde.value(0)
def Estado4():
ledRojo.value(0)
ledAmarillo.value(0)
ledVerde.value(0)
# Máquina de estados finita
def FSM(t):
global contador
global estado
contador += 1
if estado < 4 and slider.value():
estado = 4
Estado4()
elif estado == 4 and slider.value():
estado = 5
Estado3()
elif estado == 5:
estado = 4
Estado4()
elif estado == 4 and not slider.value():
estado = 0
contador = 0
Estado0()
elif estado == 0 and contador == 8:
estado = 1
contador = 0
Estado1()
elif estado == 1 and contador == 2:
estado = 2
contador = 0
Estado2()
elif estado == 2 and contador == 7:
estado = 3
contador = 0
Estado3()
elif estado == 3 and contador == 3:
estado = 0
contador = 0
Estado0()
estado = 0
Estado0()
elTimer = Timer(0)
elTimer.init(mode=Timer.PERIODIC, period=1000, callback=FSM)