def __init__(self, cfg): # PWM settings FREQ = 60.0 # Set frequency to 60 Hz self.pwm = PWM(0x40, debug=False) self.pwm.setPWMFreq(FREQ) pulseLength = 1000000 # 1,000,000 us per second pulseLength /= FREQ # 60 Hz pulseLength /= 4096 # 12 bits of resolution self.pulseFactor = 1000 / pulseLength # millisecond multiplier # Tested Servo range self.pulsecenter = float(cfg['turret']['pulsecenter']) self.pulserange = float(cfg['turret']['pulserange'])
class ServoDriver : def __init__(self, cfg): # PWM settings FREQ = 60.0 # Set frequency to 60 Hz self.pwm = PWM(0x40, debug=False) self.pwm.setPWMFreq(FREQ) pulseLength = 1000000 # 1,000,000 us per second pulseLength /= FREQ # 60 Hz pulseLength /= 4096 # 12 bits of resolution self.pulseFactor = 1000 / pulseLength # millisecond multiplier # Tested Servo range self.pulsecenter = float(cfg['turret']['pulsecenter']) self.pulserange = float(cfg['turret']['pulserange']) def move(self, servo, position): if -1 < position < 1: #movement range -1...0...1 pulse = self.pulsecenter + (position*self.pulserange) # w/in range from middle pulse *= self.pulseFactor # ~120-600 at 60hz self.pwm.setPWM(servo, 0, int(pulse))
class ServoDriver: def __init__(self, cfg): # PWM settings FREQ = 60.0 # Set frequency to 60 Hz self.pwm = PWM(0x40, debug=False) self.pwm.setPWMFreq(FREQ) pulseLength = 1000000 # 1,000,000 us per second pulseLength /= FREQ # 60 Hz pulseLength /= 4096 # 12 bits of resolution self.pulseFactor = 1000 / pulseLength # millisecond multiplier # Tested Servo range self.pulsecenter = float(cfg['turret']['pulsecenter']) self.pulserange = float(cfg['turret']['pulserange']) def move(self, servo, position): if -1 < position < 1: #movement range -1...0...1 pulse = self.pulsecenter + (position * self.pulserange ) # w/in range from middle pulse *= self.pulseFactor # ~120-600 at 60hz self.pwm.setPWM(servo, 0, int(pulse))