import machine
from machine import Pin,Timer
ledRojo = Pin(14,Pin.OUT)
ledAmarillo = Pin(12,Pin.OUT)
ledVerde = Pin(13,Pin.OUT)
switch = Pin(2,Pin.IN,Pin.PULL_UP)
contador = 0
estado = 0
def estadoCero():#Rojo
ledRojo.value(1)
ledAmarillo.value(0)
ledVerde.value(0)
def estadoUno():#Rojo y Amarillo
ledRojo.value(1)
ledAmarillo.value(1)
ledVerde.value(0)
def estadoDos():#Verde
ledRojo.value(0)
ledAmarillo.value(0)
ledVerde.value(1)
def estadoTres():#Amarillo
ledRojo.value(0)
ledAmarillo.value(1)
ledVerde.value(0)
def estadoCuatro():#OFF
ledRojo.value(0)
ledAmarillo.value(0)
ledVerde.value(0)
def esPar(X):
if X%2 == 0:
return True
else:
return False
def FSM(t):
global contador
global estado
contador += 1
print(str(contador))
if estado < 4 and switch.value():
estado = 4
estadoCuatro()
elif estado == 4 and switch.value():
estado = 5
estadoTres()
elif estado == 5 and switch.value():
estado = 4
estadoCuatro()
elif estado == 4 and not switch.value():
estado = 0
estadoCero()
contador = 0
elif estado == 0 and contador == 8:#Rojo
estado = 1
contador = 0
estadoUno()
elif estado == 1 and contador == 2:#Rojo+Amarillo
estado = 2
contador = 0
estadoDos()
elif estado == 2:#VERDE
if contador == 7:
contador = 0
estado = 3
estadoTres()
elif esPar(contador) == False:
estadoCuatro()
else:
estadoDos()
elif estado == 3 and contador == 3:
contador = 0
estado = 0
estadoCero()
estadoCero()
elTimer = Timer(1)
elTimer.init(mode = Timer.PERIODIC, period = 1000,callback = FSM)