pid-balancer/Examples/Adafruit_PCA9685_servo_driver.py
2024-12-25 16:52:07 +01:00

29 lines
790 B
Python

import pwmio
from Adafruit_PCA9685 import PCA9685
from time import sleep
def angle_to_pulse(angle):
# Calculate pulse length as derivative of the angle.
pulse = int(round(41 / 9 * angle / 2 + 100, 0))
return pulse
# Define driver object
pwm = PCA9685()
# Set frequency
pwm.set_pwm_freq(50)
# Channel of the driver board (0-15)
channel = 0
# Minimum and maximum pulse lengths. 100-510 translates to 0-180 degree.
# The formula for angel to pulse length is: 41/9 * <angle> /2 +100. MUST BE ROUNDED en set to INT()
min_pulse = 100 # Min pulse length = 0deg
max_pulse = 510 # Max pulse length = 180deg
# Example with <set_angle> parameter
set_angle = 180
print("Angle:", set_angle, "> Pulse:", angle_to_pulse(set_angle))
pwm.set_pwm(channel, 0, angle_to_pulse(set_angle))