from machine import Pin, PWM
import time
servo = PWM(Pin(15))
servo.freq(50)
def set_angle(angle):
# Typical Pico duty_u16 uses 0..65535; mapping depends on servo pulse widths.
# Using a conservative mapping: 0.5ms -> 2.5% ; 2.5ms -> 12.5% at 50Hz
min_u16 = int(0.025 * 65535) # adjust if needed
max_u16 = int(0.125 * 65535)
duty = int(min_u16 + (angle / 180.0) * (max_u16 - min_u16))
servo.duty_u16(duty)
while True:
# sweep from 30 to 150 and back
for angle in range(30, 181, 5):
set_angle(angle)
time.sleep(0.05)
for angle in range(150, 29, -5):
set_angle(angle)
time.sleep(0.02)