from machine import Pin, PWM, ADC
import time
from time import sleep

"""
IMPORTANTE: 1) ADAPTAR EL CODIGO PARA QUE FUNCIONE CON LOS PIN TOUCH 
            2) FALTA HACER QUE AL PRESIONAR LOS BOTONES(TOUCH)ESTOS TENGAN ENCLAVAMIENTO 
"""

# Configuración de las propiedades de PWM
frecuencia = 5000
resolucion = 8
ledB = PWM(Pin(14), freq=frecuencia, duty=0)#salida hacia el motor producto del giro del potenciometro
potB = ADC(Pin(32,Pin.IN)) #lectura entrante del potenciometro
A1 = Pin(21, Pin.OUT)  # Simula IN1
A2 = Pin(18, Pin.OUT)  # Simula IN2
A3 = Pin(19, Pin.OUT)  # Simula ENABLE
Boton1 = Pin(13, Pin.IN)  # Simula los pines touch
Boton2 = Pin(4, Pin.IN)  # Uno para parar la operación del motor y el otro para invertir el giro
leds_encendidos = False #variables auxiliares 
motor_pausado = False
while True:
    A3.value(1)  #simula el enable del motor el cual siempre estara en uno al menos que se presione el touch simulado como BOTON2
    if Boton1.value() == 1:  # funciona para invertir el giro(puertos IN1 y IN2 ) en base al umbral 
        leds_encendidos = not leds_encendidos # Invertir el estado de los LEDs al presionar el botón
        if leds_encendidos:
            A1.value(1) #cambiar estos valores logicos de tal forma que uno mande un uno y el otro un cero 
            A2.value(1)
        else:
            A1.value(0)  # Apagar los LEDs
            A2.value(0)
        while Boton1.value() == 1:
            sleep(0.1)
    if Boton2.value() == 1:# PARA APAGAR EL MOTOR
        motor_pausado = not motor_pausado
        sleep(0.1)
        if motor_pausado:
            y=0
            while y != 1: #Toco crear este while para que pueda tener enclavamiento
                print("a")
                A3.value(0)
                sleep(0.1)
                if Boton2.value() == 1:
                    y+=1
    valorPotenciometroB = potB.read() #toma la lectura del potenciometro 
    cicloLEDB = int(valorPotenciometroB / 16) # si no se colocaba int, a partir de la linea 37 se empieza a tener problemas
                                              # debido a que daria un valor de tipo flotante
    ledB.duty(cicloLEDB)  #salida para el control de velocidad de giro del motor 
    time.sleep_ms(15)  # Pequeña pausa