29 lines
790 B
Python
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))
|
||
|
|
|