Updated class
This commit is contained in:
@@ -23,31 +23,18 @@ class dw_Motor:
|
||||
|
||||
self.servo_zero = math.trunc( ( self.servo_min + self.servo_max ) / 2 ) # halfway = 0 degrees
|
||||
|
||||
|
||||
if (num == 0):
|
||||
self.pin = 9
|
||||
elif (num == 1):
|
||||
self.pin = 8
|
||||
self.pin = 8
|
||||
elif (num == 2):
|
||||
self.pin = 10
|
||||
self.pin = 10
|
||||
elif (num == 3):
|
||||
self.pin = 11
|
||||
self.pin = 11
|
||||
elif (num == 4):
|
||||
self.pin = 12
|
||||
self.pin = 12
|
||||
elif (num == 5):
|
||||
self.pin = 13
|
||||
elif (num == 6):
|
||||
self.pin = 0
|
||||
elif (num == 7):
|
||||
self.pin = 1
|
||||
elif (num == 8):
|
||||
self.pin = 2
|
||||
elif (num == 9):
|
||||
self.pin = 3
|
||||
elif (num == 10):
|
||||
self.pin = 5
|
||||
elif (num == 11):
|
||||
self.pin = 4
|
||||
self.pin = 13
|
||||
else:
|
||||
raise NameError('Motors must be between 1 and 12 inclusive')
|
||||
|
||||
@@ -64,40 +51,28 @@ class dw_Motor:
|
||||
|
||||
def setPWM(self, value):
|
||||
if(value > 0):
|
||||
self.MC._pwm.setPWM(self.pin, 0, int(value) )
|
||||
self.MC._pwm.set_pwm(self.pin, 0, int(value) )
|
||||
if(value == 0):
|
||||
self.off()
|
||||
|
||||
def setPWMmS(self, length_ms):
|
||||
self.setPWM( round( length_ms * 4096 ) / ( 1000 / self.freq ) )
|
||||
self.setPWM( math.trunc( ( length_ms * 4096 ) / ( 1000.0 / self.freq ) ) - 1 )
|
||||
|
||||
def setPWMuS(self, length_us):
|
||||
self.setPWM( round( length_us * 4096 ) / ( 1000000 / self.freq ) )
|
||||
self.setPWM( math.trunc( ( length_us * 4096 ) / ( 1000000.0 / self.freq ) ) -1 )
|
||||
|
||||
def setMotorSpeed(self, value):
|
||||
# Check for PWM values
|
||||
if(value > 1000) and (value < 2000):
|
||||
self.setPWMmS(value)
|
||||
self.setPWMuS(value)
|
||||
# Translate for motor values
|
||||
if(value > 0) and (value <= 255):
|
||||
self.setPWMmS( round(translate(value, 0, 255, 1500, 2000)))
|
||||
self.setPWMuS( round(translate(value, 0, 255, 1500, 2000)))
|
||||
if(value == 0):
|
||||
self.setPWMmS(1500)
|
||||
self.setPWMuS(1500)
|
||||
if(value < 0) and (value >= -255):
|
||||
self.setPWMmS(round(translate(abs(value), 0, 255, 1500, 1000)))
|
||||
self.setPWMuS(round(translate(abs(value), 0, 255, 1500, 1000)))
|
||||
|
||||
def run(self, command, speed = 0):
|
||||
if not self.MC:
|
||||
return
|
||||
if (command == dw_Controller.FORWARD):
|
||||
self.MC.setPin(self.PHpin, 0)
|
||||
self.MC._pwm.set_pwm(self.ENpin, 0, speed*16)
|
||||
if (command == dw_Controller.BACKWARD):
|
||||
self.MC.setPin(self.PHpin, 1)
|
||||
self.MC._pwm.set_pwm(self.ENpin, 0, speed*16)
|
||||
if (command == dw_Controller.RELEASE):
|
||||
self.MC.setPin(self.PHpin, 0)
|
||||
self.MC.setPin(self.ENpin, 0)
|
||||
|
||||
class dw_Servo:
|
||||
def __init__(self, controller, num, freq):
|
||||
@@ -119,28 +94,16 @@ class dw_Servo:
|
||||
|
||||
|
||||
if (num == 0):
|
||||
self.pin = 9
|
||||
elif (num == 1):
|
||||
self.pin = 8
|
||||
elif (num == 2):
|
||||
self.pin = 10
|
||||
elif (num == 3):
|
||||
self.pin = 11
|
||||
elif (num == 4):
|
||||
self.pin = 12
|
||||
elif (num == 5):
|
||||
self.pin = 13
|
||||
elif (num == 6):
|
||||
self.pin = 0
|
||||
elif (num == 7):
|
||||
elif (num == 1):
|
||||
self.pin = 1
|
||||
elif (num == 8):
|
||||
elif (num == 2):
|
||||
self.pin = 2
|
||||
elif (num == 9):
|
||||
elif (num == 3):
|
||||
self.pin = 3
|
||||
elif (num == 10):
|
||||
elif (num == 4):
|
||||
self.pin = 5
|
||||
elif (num == 11):
|
||||
elif (num == 5):
|
||||
self.pin = 4
|
||||
else:
|
||||
raise NameError('Port must be between 1 and 12 inclusive')
|
||||
@@ -158,19 +121,27 @@ class dw_Servo:
|
||||
|
||||
def setPWM(self, value):
|
||||
if(value > 0):
|
||||
self.MC._pwm.setPWM(self.pin, 0, int(value) )
|
||||
self.MC._pwm.set_pwm(self.pin, 0, int(value) )
|
||||
if(value == 0):
|
||||
self.off()
|
||||
|
||||
def setPWMmS(self, length_ms):
|
||||
self.setPWM( round( length_ms * 4096 ) / ( 1000 / self.freq ) )
|
||||
self.setPWM( math.trunc( ( length_ms * 4096 ) / ( 1000.0 / self.freq ) ) - 1 )
|
||||
|
||||
def setPWMuS(self, length_us):
|
||||
self.setPWM( round( length_us * 4096 ) / ( 1000000 / self.freq ) )
|
||||
self.setPWM( math.trunc( ( length_us * 4096 ) / ( 1000000.0 / self.freq ) ) -1 )
|
||||
|
||||
def run(self, command, speed = 0):
|
||||
if not self.MC:
|
||||
return
|
||||
def setMotorSpeed(self, value):
|
||||
# Check for PWM values
|
||||
if(value > 1000) and (value < 2000):
|
||||
self.setPWMuS(value)
|
||||
# Translate for motor values
|
||||
if(value > 0) and (value <= 255):
|
||||
self.setPWMuS( round(translate(value, 0, 255, 1500, 2000)))
|
||||
if(value == 0):
|
||||
self.setPWMuS(1500)
|
||||
if(value < 0) and (value >= -255):
|
||||
self.setPWMuS(round(translate(abs(value), 0, 255, 1500, 1000)))
|
||||
|
||||
|
||||
class dw_Controller:
|
||||
@@ -183,8 +154,8 @@ class dw_Controller:
|
||||
self._pwm.set_pwm_freq(self._frequency, correctionFactor)
|
||||
# Just gonna default to high for now
|
||||
|
||||
self.servo = [ dw_PWM(self, m, freq) for m in range(6) ]
|
||||
self.esc = [ dw_PWM(self, m, freq) for m in range(6, 12) ]
|
||||
self.motors = [ dw_Motor(self, m, freq) for m in range(6) ]
|
||||
self.servos = [ dw_Servo(self, m, freq) for m in range(6) ]
|
||||
|
||||
def setPin(self, pin, value):
|
||||
if (pin < 0) or (pin > 15):
|
||||
|
||||
Reference in New Issue
Block a user