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)