class DCMotor:      
    def __init__(self, pin1, pin2, pin_control, minimo=750, maximo=1023):
        self.pin1 = pin1
        self.pin2 = pin2
        self.pin_control = pin_control
        self.minimo = minimo
        self.maximo = maximo

    def avance(self, velocidad):
        self.pin1.value(1)
        self.pin2.value(0)
        self.pin_control.duty(self.ciclo(velocidad))

    def retroceso(self, velocidad):
        self.pin1.value(0)
        self.pin2.value(1)
        self.pin_control.duty(self.ciclo(velocidad))

    def stop(self):
        self.pin_control.duty(0)
        self.pin1.value(0)
        self.pin2.value(0)

    def ciclo(self, velocidad):
        if velocidad <= 0:
            return 0
        if velocidad > 100:
            velocidad = 100
        # Mapea 1-100% a minimo - maximo
        return int(self.minimo + (self.maximo - self.minimo) * ((velocidad - 1) / 99))
