import machine

class Motor:
    def __init__(self, enable, dir1, dir2):
        self.enable_pin = machine.Pin(enable, machine.Pin.OUT)
        self.enable_pwm = machine.PWM(self.enable_pin)
        self.enable_pwm.freq(250)

        self.dir1_pin = machine.Pin(dir1, machine.Pin.OUT)
        self.dir2_pin = machine.Pin(dir2, machine.Pin.OUT)

        self.direction = 1 # default direction: dir1_pin = HIGH, dir2_pin = LOW
        self.reverse()

    def reverse(self):
        self.direction = not self.direction
        self.dir1_pin.value(self.direction)
        self.dir2_pin.value(not self.direction)

    def speed(self, value):
        if value > 0: # forward
            if not self.direction: # switch direction if necessary
                self.reverse()
        else: # backward
            if self.direction: # switch direction if necessary
                self.reverse()
        # apply value as pwm signal
        self.enable_pwm.duty(int(abs(value)*10.23))

