from machine import Pin, PWM
import time
#Set GPIO as a PWM pin
servo = PWM(Pin(15))
servo.freq(50) #Standard servo frequency is 50 Hz
def set_angle(angle):
#convert angle (0-180) to duty cycle (range 1638 to 7192 for 0.5ms to 2.5ms)
min_duty = 1638 #corresponds to 0 degrees
max_duty = 7192 #corresponds to 180 degrees
duty = int(min_duty + (angle / 180) * (max_duty - min_duty))
servo.duty_u16(duty)
# sweep the servo from 0 to 180 degrees and back
while True:
for angle in range(0, 180, 10):
set_angle(angle)
time.sleep(0.05)
for angle in range(180, -1, -10):
set_angle(angle)
time.sleep(0.05)