from machine import Pin, PWM
import time

# Servo on D10 = GPIO3
servo = PWM(Pin(3))
servo.freq(50)  # 50Hz for servo

# Convert angle to PWM duty
def set_angle(angle):
    angle = max(0, min(180, angle))

    min_duty = 1638   # adjust if needed
    max_duty = 8192

    duty = int(min_duty + (max_duty - min_duty) * angle / 180)
    servo.duty_u16(duty)

    print("Angle:", angle)

# Sweep test
while True:
    for angle in range(0, 181, 15):
        set_angle(angle)
        time.sleep(0.3)

    for angle in range(180, -1, -15):
        set_angle(angle)
        time.sleep(0.3)
        set_angle(angle)
        time.sleep(0.4)