import time from PCA9685 import PCA9685 class Motor: def __init__(self): self.pwm = PCA9685(0x40, debug=True) self.pwm.setPWMFreq(50) def left_Upper_Wheel(self,duty): if duty>0: self.pwm.setMotorPwm(1,0) self.pwm.setMotorPwm(0,duty) elif duty<0: self.pwm.setMotorPwm(0,0) self.pwm.setMotorPwm(1,abs(duty)) else: self.pwm.setMotorPwm(0,4096) self.pwm.setMotorPwm(1,4096) def left_Lower_Wheel(self,duty): if duty>0: self.pwm.setMotorPwm(2,0) self.pwm.setMotorPwm(3,duty) elif duty<0: self.pwm.setMotorPwm(3,0) self.pwm.setMotorPwm(2,abs(duty)) else: self.pwm.setMotorPwm(2,4096) self.pwm.setMotorPwm(3,4096) def right_Upper_Wheel(self,duty): if duty>0: self.pwm.setMotorPwm(7,0) self.pwm.setMotorPwm(6,duty) elif duty<0: self.pwm.setMotorPwm(6,0) self.pwm.setMotorPwm(7,abs(duty)) else: self.pwm.setMotorPwm(6,4096) self.pwm.setMotorPwm(7,4096) def right_Lower_Wheel(self,duty): if duty>0: self.pwm.setMotorPwm(5,0) self.pwm.setMotorPwm(4,duty) elif duty<0: self.pwm.setMotorPwm(4,0) self.pwm.setMotorPwm(5,abs(duty)) else: self.pwm.setMotorPwm(4,4096) self.pwm.setMotorPwm(5,4096) def setMotorModel(self,duty1,duty2,duty3,duty4): self.left_Upper_Wheel(duty1) self.left_Lower_Wheel(duty2) self.right_Upper_Wheel(duty3) self.right_Lower_Wheel(duty4) PWM=Motor() def loop(): PWM.setMotorModel(2000,2000,2000,2000) #Forward time.sleep(3) PWM.setMotorModel(-2000,-2000,-2000,-2000) #Back time.sleep(3) PWM.setMotorModel(-500,-500,2000,2000) #Left time.sleep(3) PWM.setMotorModel(2000,2000,-500,-500) #Right time.sleep(3) PWM.setMotorModel(0,0,0,0) #Stop def destroy(): PWM.setMotorModel(0,0,0,0) if __name__=='__main__': try: loop() except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the child program destroy() will be executed. destroy()