from machine import Pin, PWM
import time
# Define pins
SERVO_PIN = 16 # Change as needed
BUTTON_PIN = 17 # Change as needed
# Initialize servo (50 Hz PWM)
servo = PWM(Pin(SERVO_PIN))
servo.freq(50)
# Initialize button with pull-up resistor
button = Pin(BUTTON_PIN, Pin.IN, Pin.PULL_UP)
# Function to move servo
def set_servo_angle(angle):
min_duty = 1500 # Adjusted for most servos (~0.5ms pulse for 0°)
max_duty = 8000 # Adjusted (~2.5ms pulse for 180°)
duty = int((angle / 180) * (max_duty - min_duty) + min_duty)
servo.duty_u16(duty)
time.sleep(0.5) # Allow time for movement
# Initial position
direction = False # False = left, True = right
set_servo_angle(90) # Start at center position
while True:
if button.value() == 0: # If button is pressed
direction = not direction # Toggle direction
if direction:
set_servo_angle(180) # Move right
print("RIGHT")
else:
set_servo_angle(0) # Move left
print("LEFT")
time.sleep(0.3) # Debounce delay
while button.value() == 0: # Wait for button release
pass