from machine import Pin, PWM
from utime import sleep

#Configurar el pin para el servo motor
señalServo = PWM(Pin(25), freq=50)

# Configurar el pin para el led
Led = Pin(19, Pin.OUT)

# Función que cumple la primera accion del servo (abrir el dispensador)
def disp_abierto():
    # Aqui se configura el servo para que gire los grados necesarios
    for gradServo in range(0, 90):
        # Ajustar el valor de la señal
        señalServo.duty(gradServo)
        
        # Pausas para el que el servo gire lentamente
        sleep(0.05)
        
        # Mensaje que muestra la acion que esta haciendo el servo y los grados que ha girado
        print(f"Abriendo dispensador ", gradServo, "°")
        
        # Aqui se enciende el led solo cuando se abre el dispensador
        Led.on()

# Función que cumple la segunda accion del servo (cerrar el dispensador)
def disp_cerrado():
    # Aqui se configura de nuevo el servo para que gire los grados necesarios, en este casi en direccion contraria
    for gradServo in range(90, 0, -1):
        # Ajusta el valor de la señal para mover el servo
        señalServo.duty(gradServo)
        
        # Pausas para que el servo gire lentamente
        sleep(0.05)
        
        # Mensaje que muestra la accion que esta haciendo el servo y los grados que ha girado
        print(f"Cerrando dispensador ", gradServo, "°")
        
        # Aqui apaga el led cuando el dispensador se esta cerrando
        Led.off()

# Llamar la funcion que abre el servo
disp_abierto()

# Esperar durante 3 segundos mientras se llena la coca
sleep(3)

# Llamar la funcion que cierra el servo
disp_cerrado()