#!/usr/bin/env python import cwiid import time from libs.Adafruit_PWM_Servo_Driver import PWM from numpy import interp, clip #connecting to the wiimote. This allows several attempts # as first few often fail. pwm = PWM(0x40, debug=False) pwm.setPWMFreq(50) #servos.setPWM(15,4095) def set_servo_pulse(channel, pulse): pulseLength = 1000000 # 1,000,000 us per second pulseLength /= 50 # 60 Hz print "%d us per period" % pulseLength pulseLength /= 4096 # 12 bits of resolution print "%d us per bit" % pulseLength # pulse *= 1000 pulse /= pulseLength print "pulse {0}".format(pulse) pwm.setPWM(channel, 0, pulse) print("Press 1+2 on your Wiimote now...") wm = None i = 2 while not wm: try: wm = cwiid.Wiimote()
def __init__( self, pwm_i2c=0x40, pwm_freq=50, left_channel=0, right_channel=1, aux_channel1=4, aux_channel2=5, aux_channel3=6, aux_channel4=7, debug=False ): # Main set of motor controller ranges self.servo_min = 900 #self.servo_mid = 1555 self.servo_mid = 1650 self.servo_max = 2300 # Full speed range self.servo_full_min = 900 self.servo_full_max = 2300 # Low speed range is 1/4 of full speed speed_divisor = 2 self.servo_low_min = int(self.servo_mid - (self.servo_mid-self.servo_full_min)/speed_divisor) self.servo_low_max = int(self.servo_mid + (self.servo_full_max-self.servo_mid)/speed_divisor) # Skittle launcher servos self.skittle_left_servo_closed = 1600 self.skittle_left_servo_open = 1400 self.skittle_right_servo_closed = 1600 self.skittle_right_servo_open = 1400 # Skittle launcher motors self.skittle_left_motor_stopped = 1000 self.skittle_left_motor_full_speed = 2000 self.skittle_left_motor_stopped = 1000 self.skittle_left_motor_full_speed = 2000 # Proximity probe servo limites self.proximity_servo_min = 1000 self.proximity_servo_max = 2000 # Proximity probe fan limits self.proximity_blower_esc_stopped = 1000 self.proximity_blower_esc_max = 2000 self.channels = { 'left': left_channel, 'right': right_channel 'blower': aux_channel1 'probe_servo': aux_channel2 'skittle_left_servo':aux_channel1 'skittle_right_servo':aux_channel2 'skittle_left_motor':aux_channel3 'skittle_right_motor':aux_channel4 } self.pwm = PWM(pwm_i2c, debug=debug) self.pwm.setPWMFreq(pwm_freq) # Flag set to True when motors are allowed to move self.drive_enabled = False self.disable_drive()