from machine import Pin, PWM
import time
# Create PWM on pin 2 at 50Hz (standard servo frequency)
servo = PWM(Pin(2), freq=50)
def set_angle(angle):
# angle should be 0-180
# Convert angle to duty cycle for 0.5–2.5 ms pulse width
min_us = 500
max_us = 2500
us = min_us + (max_us - min_us) * angle // 180
duty = int(us / 20000 * 1023) # 20ms period at 50Hz
servo.duty(duty)
# Example: sweep servo
while True:
for angle in range(0, 181, 30): # 0 → 180
set_angle(angle)
time.sleep(1)
for angle in range(180, -1, -30): # 180 → 0
set_angle(angle)
time.sleep(1)