import board import pwmio import time motorIN1 = pwmio.PWMOut(board.GP8, frequency=1000, duty_cycle=0) motorIN2 = pwmio.PWMOut(board.GP9, frequency=1000, duty_cycle=0) # DRIVE FORWARD motorIN1.duty_cycle = 65535 # This is the maximum value motorIN2.duty_cycle = 0 # This is the minimum value time.sleep(1) # DRIVE BACKWARD motorIN1.duty_cycle = 0 motorIN2.duty_cycle = 65535 time.sleep(1) # STOP motorIN1.duty_cycle = 0 motorIN2.duty_cycle = 0 import board import pwmio import time # Initialize motor PWM pins motorIN1 = pwmio.PWMOut(board.GP8, frequency=1000, duty_cycle=0) motorIN2 = pwmio.PWMOut(board.GP9, frequency=1000, duty_cycle=0) def motor(power): # Make sure power is never greater than 100 or less than -100 if power > 100: power = 100 elif power < -100: power = -100 # Convert 0-100 value, to 0 to 65535 duty = abs(power) * 65535 // 100 # Apply power to a motor pin, depending on if its greater or less than 0 if power > 0: motorIN1.duty_cycle = duty motorIN2.duty_cycle = 0 elif power < 0: motorIN1.duty_cycle = 0 motorIN2.duty_cycle = duty else: motorIN1.duty_cycle = 0 motorIN2.duty_cycle = 0 # TESTS motor(100) # FULL FORWARD time.sleep(3) motor(-100) # FULL REVERSE time.sleep(3) # Start at FULL REVERSE and slowly change from -100 to 100 for i in range(-100, 100): motor(i) print(i) time.sleep(0.1) import board import time import motor left_motor = motor.Motor(board.GP8, board.GP9) # TESTS left_motor.move(100) # FULL FORWARD time.sleep(2) left_motor.move(-100) # FULL REVERSE time.sleep(2) left_motor.move(0) # Start at FULL REVERSE and slowly change from -100 to 100 for i in range(-100, 100): left_motor.move(i) print(i) time.sleep(0.1) import pwmio class Motor: def __init__(self, in1_pin, in2_pin, frequency=1000): # Set up PWM outputs on the specified pins self.in1 = pwmio.PWMOut(in1_pin, frequency=frequency, duty_cycle=0) self.in2 = pwmio.PWMOut(in2_pin, frequency=frequency, duty_cycle=0) def move(self, power): # Constrain power to -100 to 100 if power > 100: power = 100 elif power < -100: power = -100 # Scale to duty cycle duty = abs(power) * 65535 // 100 if power > 0: self.in1.duty_cycle = duty self.in2.duty_cycle = 0 elif power < 0: self.in1.duty_cycle = 0 self.in2.duty_cycle = duty else: self.in1.duty_cycle = 0 self.in2.duty_cycle = 0