from machine import Pin, Timer
#definimos variables globales
ledVerde=Pin(27, Pin.OUT)
ledAmarillo = Pin(25, Pin.OUT)
ledRojo = Pin(33, Pin.OUT)
#EL switch fuerza un intermitente amarillo
switch = Pin(2, Pin.IN, Pin.PULL_UP)
contador=0
estado=0
#funciones de estado
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)
#estado 4: semáforo apagado
def Estado4():
ledRojo.value(0)
ledAmarillo.value(0)
ledVerde(0)
#función de máquina de estado
def FSM(t):
global contador
global estado
contador = contador+1
if estado<4 and switch.value():
estado=4
Estado4()
elif estado==4 and switch.value():
estado==5
Estado3()
elif estado==5:
estado=4
Estado4()
elif estado==4 and not switch.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()
Estado0()
elTimer = Timer(1)
#llama a la función fsm cada 1 segundo
elTimer.init(mode=Timer.PERIODIC, period=1000, callback=FSM)