from machine import Pin, PWM
from time import sleep
# Change this to the pin your servo signal wire is connected to
servo_pin = PWM(Pin(15)) # GP15 by default
servo_pin.freq(50) # Standard servo frequency
def set_angle(angle):
# Convert angle (0–180) to duty cycle (MicroPython expects 16-bit value)
min_us = 500 # microseconds for 0°
max_us = 2400 # microseconds for 180°
us = min_us + (angle / 180) * (max_us - min_us)
duty = int(us * 65535 / 20000) # 20ms period (50Hz)
servo_pin.duty_u16(duty)
print("Moving servo...")
while True:
for ang in [0, 90, 180, 90]:
print("Angle:", ang)
set_angle(ang)
sleep(1)