Mise à jour de 'PWMDriver.py'
This commit is contained in:
parent
ce5fc4c445
commit
9ef67cb37d
1 changed files with 51 additions and 54 deletions
105
PWMDriver.py
105
PWMDriver.py
|
@ -1,54 +1,51 @@
|
|||
from Adafruit_PCA9685 import PCA9685
|
||||
|
||||
class PWMDriver:
|
||||
def __init__(self):
|
||||
self.driver = PCA9685()
|
||||
self.driver.set_pwm_freq(50)
|
||||
self.servoProfiles = {
|
||||
'default': {'range': 180, 'min': 65, 'max': 530},
|
||||
'lidar': {'range': 180, 'min': 75, 'max': 510},
|
||||
'china': {'range': 180, 'min': 75, 'max': 510},
|
||||
'flag': {'range': 180, 'min': 100, 'max': 480},
|
||||
'rev': {'range': 270, 'min': 95, 'max': 600}, # 552
|
||||
}
|
||||
|
||||
|
||||
#définir la fréquence du signal de sortie à 50hz
|
||||
def ini_esc(slot):
|
||||
slef.driver.set_pwm(slot,0,307) #307 est le signal neutre sous 50 Hz (1.5 / 20 x 4096 = 307)
|
||||
time.sleep(1)
|
||||
|
||||
def initialiser_esc():
|
||||
HZ = 50 #fréquence du signal vers les ESC
|
||||
self.driver.set_pwm_freq(HZ)
|
||||
LESC = (1, 13, 8, 9) #liste des ESC (avant gauche, avant droit, arrière gauche, arrière droit)
|
||||
ini_esc(LESC[0])
|
||||
ini_esc(LESC[1])
|
||||
ini_esc(LESC[2])
|
||||
ini_esc(LESC[3])
|
||||
|
||||
def setAngle(self, slot, angle, profileName = 'default'):
|
||||
profile = None
|
||||
if type(profileName) is dict:
|
||||
profile = profileName
|
||||
if profile == None:
|
||||
if profileName not in self.servoProfiles:
|
||||
profileName = 'default'
|
||||
profile = self.servoProfiles[profileName]
|
||||
if 'range' not in profile:
|
||||
profile['range'] = 180
|
||||
if angle < 0 or angle > profile['range']:
|
||||
print('PWMDriver: Invalid range passed ' + angle + ' but range is ' + profile['range'])
|
||||
if slot > 15 or slot < 0:
|
||||
print('> ERR!!! Invalid slot passed to setAngle!')
|
||||
return
|
||||
pulse = int(self.mappyt(angle, 0, profile['range'], profile['min'], profile['max']))
|
||||
#print('setting slot', slot, 'to angle', angle, 'with profile', profileName, profile, pulse)
|
||||
self.driver.set_pwm(slot, 0, pulse)
|
||||
|
||||
def setPwm(self, slot, off, on):
|
||||
#self.driver.set_pwm(slot, off, on)
|
||||
self.driver.set_pwm(slot, off,on)
|
||||
|
||||
def mappyt(self, x, inMin, inMax, outMin, outMax):
|
||||
return (x - inMin) * (outMax - outMin) / (inMax - inMin) + outMin
|
||||
from Adafruit_PCA9685 import PCA9685
|
||||
|
||||
class PWMDriver:
|
||||
def __init__(self):
|
||||
self.driver = PCA9685()
|
||||
self.driver.set_pwm_freq(50)
|
||||
self.servoProfiles = {
|
||||
'default': {'range': 180, 'min': 65, 'max': 530},
|
||||
'lidar': {'range': 180, 'min': 75, 'max': 510},
|
||||
'china': {'range': 180, 'min': 75, 'max': 510},
|
||||
'flag': {'range': 180, 'min': 100, 'max': 480},
|
||||
'rev': {'range': 270, 'min': 95, 'max': 600}, # 552
|
||||
}
|
||||
|
||||
|
||||
#définir la fréquence du signal de sortie à 50hz
|
||||
def ini_esc(slot):
|
||||
slef.driver.set_pwm(slot,0,307) #307 est le signal neutre sous 50 Hz (1.5 / 20 x 4096 = 307)
|
||||
time.sleep(1)
|
||||
|
||||
def initialiser_esc():
|
||||
HZ = 50 #fréquence du signal vers les ESC
|
||||
self.driver.set_pwm_freq(HZ)
|
||||
LESC = (1, 13, 8, 9) #liste des ESC (avant gauche, avant droit, arrière gauche, arrière droit)
|
||||
ini_esc(LESC[0])
|
||||
ini_esc(LESC[1])
|
||||
ini_esc(LESC[2])
|
||||
ini_esc(LESC[3])
|
||||
def setAngle(self, slot, angle, profileName = 'default'):
|
||||
profile = None
|
||||
if type(profileName) is dict:
|
||||
profile = profileName
|
||||
if profile == None:
|
||||
if profileName not in self.servoProfiles:
|
||||
profileName = 'default'
|
||||
profile = self.servoProfiles[profileName]
|
||||
if 'range' not in profile:
|
||||
profile['range'] = 180
|
||||
if angle < 0 or angle > profile['range']:
|
||||
print('PWMDriver: Invalid range passed ' + angle + ' but range is ' + profile['range'])
|
||||
if slot > 15 or slot < 0:
|
||||
print('> ERR!!! Invalid slot passed to setAngle!')
|
||||
return
|
||||
pulse = int(self.mappyt(angle, 0, profile['range'], profile['min'], profile['max']))
|
||||
#print('setting slot', slot, 'to angle', angle, 'with profile', profileName, profile, pulse)
|
||||
self.driver.set_pwm(slot, 0, pulse)
|
||||
def setPwm(self, slot, off, on):
|
||||
#self.driver.set_pwm(slot, off, on)
|
||||
self.driver.set_pwm(slot, off,on)
|
||||
def mappyt(self, x, inMin, inMax, outMin, outMax):
|
||||
return (x - inMin) * (outMax - outMin) / (inMax - inMin) + outMin
|
||||
|
|
Loading…
Reference in a new issue