Updating library
This commit is contained in:
@@ -3,17 +3,23 @@
|
|||||||
import RPi.GPIO as GPIO
|
import RPi.GPIO as GPIO
|
||||||
from Adafruit_PWM_Servo_Driver import PWM
|
from Adafruit_PWM_Servo_Driver import PWM
|
||||||
import time
|
import time
|
||||||
|
import math
|
||||||
|
|
||||||
class dw_PWM:
|
class dw_PWM:
|
||||||
def __init__(self, controller, num, freq):
|
def __init__(self, controller, num, freq):
|
||||||
|
|
||||||
|
_SERVO_MIN_MS = 1.250 #ms
|
||||||
|
_SERVO_MAX_MS = 1.750 #ms
|
||||||
|
|
||||||
self.speed = 0
|
self.speed = 0
|
||||||
self.MC = controller
|
self.MC = controller
|
||||||
self.cnum = num
|
self.cnum = num
|
||||||
self.pin = 0
|
self.pin = 0
|
||||||
|
|
||||||
self.freq = freq
|
self.freq = freq
|
||||||
self.cycle = 1/freq
|
|
||||||
self.tick = self.cycle / 4096
|
self.servo_min = math.trunc( ( _SERVO_MIN_MS * 4096 ) / (1000.0 / self.freq ) - 1 )
|
||||||
|
self.servo_max = math.trunc( ( _SERVO_MAX_MS * 4096 ) / (1000.0 / self.freq ) - 1 )
|
||||||
|
|
||||||
if (num == 0):
|
if (num == 0):
|
||||||
self.pin = 9
|
self.pin = 9
|
||||||
@@ -57,6 +63,12 @@ class dw_PWM:
|
|||||||
if(value == 0):
|
if(value == 0):
|
||||||
self.off()
|
self.off()
|
||||||
|
|
||||||
|
def setPWMmS(self, length_ms):
|
||||||
|
self.setPWM( math.round( length_ms * 4096 ) / ( 1000 / self.freq ) )
|
||||||
|
|
||||||
|
def setPWMuS(self, length_us):
|
||||||
|
self.setPWM( math.round( length_ms * 4096 ) / ( 1000000 / self.freq ) )
|
||||||
|
|
||||||
def run(self, command, speed = 0):
|
def run(self, command, speed = 0):
|
||||||
if not self.MC:
|
if not self.MC:
|
||||||
return
|
return
|
||||||
@@ -64,7 +76,7 @@ class dw_PWM:
|
|||||||
|
|
||||||
class dw_PWMCONTROL:
|
class dw_PWMCONTROL:
|
||||||
|
|
||||||
def __init__(self, addr = 0x61, freq = 60):
|
def __init__(self, addr = 0x61, freq = 100):
|
||||||
self._i2caddr = addr # default addr on HAT
|
self._i2caddr = addr # default addr on HAT
|
||||||
self._frequency = freq # default @60Hz PWM freq
|
self._frequency = freq # default @60Hz PWM freq
|
||||||
# self.steppers = [ Adafruit_StepperMotor(self, 1), Adafruit_StepperMotor(self, 2) ]
|
# self.steppers = [ Adafruit_StepperMotor(self, 1), Adafruit_StepperMotor(self, 2) ]
|
||||||
@@ -85,6 +97,16 @@ class dw_PWMCONTROL:
|
|||||||
if (value == 1):
|
if (value == 1):
|
||||||
self._pwm.setPWM(pin, 4096, 0)
|
self._pwm.setPWM(pin, 4096, 0)
|
||||||
|
|
||||||
|
def setAllPin(self, value):
|
||||||
|
if (pin < 0) or (pin > 15):
|
||||||
|
raise NameError('PWM pin must be between 0 and 15 inclusive')
|
||||||
|
if (value != 0) and (value != 1):
|
||||||
|
raise NameError('Pin value must be 0 or 1!')
|
||||||
|
if (value == 0):
|
||||||
|
self._pwm.setAllPWM(0, 4096)
|
||||||
|
if (value == 1):
|
||||||
|
self._pwm.setAllPWM(4096, 0)
|
||||||
|
|
||||||
def getESC(self, num):
|
def getESC(self, num):
|
||||||
if (num < 1) or (num > 6):
|
if (num < 1) or (num > 6):
|
||||||
raise NameError('ESC must be between 1 and 6 inclusive')
|
raise NameError('ESC must be between 1 and 6 inclusive')
|
||||||
@@ -95,8 +117,23 @@ class dw_PWMCONTROL:
|
|||||||
raise NameError('Servo must be between 1 and 6 inclusive')
|
raise NameError('Servo must be between 1 and 6 inclusive')
|
||||||
return self.servo[num-1]
|
return self.servo[num-1]
|
||||||
|
|
||||||
|
def setAllPWM(self, value):
|
||||||
|
if(value > 0):
|
||||||
|
self._pwm.setAllPWM(0, value)
|
||||||
|
if(value == 0):
|
||||||
|
self.allOff()
|
||||||
|
|
||||||
|
def setAllPWMmS(self, value):
|
||||||
|
if(value > 0):
|
||||||
|
self._pwm.setAllPWM(0, value)
|
||||||
|
if(value == 0):
|
||||||
|
self.allOff()
|
||||||
|
|
||||||
|
def setAllPWMuS(self, value):
|
||||||
|
if(value > 0):
|
||||||
|
self._pwm.setAllPWM(0, value)
|
||||||
|
if(value == 0):
|
||||||
|
self.allOff()
|
||||||
|
|
||||||
def allOff(self):
|
def allOff(self):
|
||||||
for y in range(6):
|
this.setAllPin( 0 );
|
||||||
self.esc[y].off()
|
|
||||||
for y in range(6):
|
|
||||||
self.servo[y].off()
|
|
||||||
|
|||||||
Reference in New Issue
Block a user