class ProbeDevice: # constants fro convenient use DCMOTOR_FORWARD = 1 DCMOTOR_BACKWARD = 2 DCMOTOR_BRAKE = 3 DCMOTOR_RELEASE = 4 # 2 LED LEFT_LED = 5 RIGHT_LED = 6 # 2 servo motor SERVOMOTOR_HORIZONTAL = 7 SERVOMOTOR_VERTICAL = 8 def __init__(self): # motor HAT device init # address is 0x60, PWM Frequency = 50Hz self.mMotorHAT = Adafruit_MotorHAT(addr=0x60, freq=50) # Get left, right DC Motor self.mLeftDCMotor = self.mMotorHAT.getDCMotor(1) self.mRightDCMotor = self.mMotorHAT.getDCMotor(0) # Get left, right LED self.mLeftLED = self.mMotorHAT.getLED(0) self.mRightLED = self.mMotorHAT.getLED(1) # LED init brightness self.mLeftLED.setBrightness(255) self.mRightLED.setBrightness(255) # Get Two servo motors self.mHorizontalServoMotor = self.mMotorHAT.getServoMotor(0) self.mVerticalServoMotor = self.mMotorHAT.getServoMotor(1) def operateServoMotor(self, enumSide, numDutyCycle): # set the value of duty cycle of horizontal servo motor if enumSide == ProbeDevice.SERVOMOTOR_HORIZONTAL: self.mHorizontalServoMotor.setDutyCycle(numDutyCycle) elif enumSide == ProbeDevice.SERVOMOTOR_VERTICAL: self.mVerticalServoMotor.setDutyCycle(numDutyCycle) def turnOffMotors(self): # release all DC Motors self.mLeftDCMotor.run(Adafruit_MotorHAT.RELEASE) self.mRightDCMotor.run(Adafruit_MotorHAT.RELEASE) def operateDCMotors(self, leftMode, leftValue, rightMode, rightValue): # leftValue corresponds to the left DC Motor # leftMode corresponds to the direction of left DC Motor # rightValue corresponds to the right DC Motor # rightMode corresponds to the direction of right DC Motor self.mLeftDCMotor.setSpeed(leftValue) self.mRightDCMotor.setSpeed(rightValue) self.mLeftDCMotor.run(leftMode) self.mRightDCMotor.run(rightMode) def operateLED (self, direction, bOn): # bDirection == true -> LEFT LED # bDirection == false -> RIGHT LED if direction == ProbeDevice.LEFT_LED: if bOn == True: self.mLeftLED.runLED(Adafruit_MotorHAT.LED_ON) else: self.mLeftLED.runLED(Adafruit_MotorHAT.LED_OFF) else: if bOn == True: self.mRightLED.runLED(Adafruit_MotorHAT.LED_ON) else: self.mRightLED.runLED(Adafruit_MotorHAT.LED_OFF) def endUseDevice(self): turnOffMotors(self)