More robust logic for smooth transients on PCA9685

This commit is contained in:
Fabio Manganiello 2021-05-16 18:14:02 +02:00
parent df36a9f811
commit 7ee869ce42

View file

@ -95,15 +95,17 @@ class PwmPca9685Plugin(Plugin):
done = True
for channel, value in values.items():
if value == pca.channels[channel].duty_cycle:
if abs(value - pca.channels[channel].duty_cycle) < 2:
continue
done = False
if value > pca.channels[channel].duty_cycle:
pca.channels[channel].duty_cycle = min(pca.channels[channel].duty_cycle + step_value,
value,
self.MAX_PWM_VALUE)
else:
pca.channels[channel].duty_cycle = max(pca.channels[channel].duty_cycle - step_value,
value,
self.MIN_PWM_VALUE)
time.sleep(step_duration)