from compLib.PCA9685 import PCA9685 SERVO_COUNT = 10 pwm = PCA9685(0x40, debug=True) pwm.setPWMFreq(50) MIN_ANGLE = -90.0 MAX_ANGLE = 90.0 class Servo: """Control the servo ports on the robot """ @staticmethod def set_position(channel: int, angle: int, offset: float =90): """Set position of servo connected to port :param channel: channel between 0 and 7 :param angle: Angle of servo """ if channel < 0 or channel >= SERVO_COUNT: raise IndexError("Invalid Servo channel specified!") angle = max(min(angle, MAX_ANGLE), MIN_ANGLE) pwm.setServoPulse(channel + 8, 500+int((angle+offset)/0.09)) @staticmethod def setup_position(): """Set position of servos to the position used during the setup process """ Servo.set_position(0, 0) Servo.set_position(1, 0)