from machine import Pin, ADC, PWM
import time
# Initialize ADC for joystick
vrx = ADC(Pin(34)) # X-axis
vry = ADC(Pin(35)) # Y-axis
vrx.atten(ADC.ATTN_11DB)
vry.atten(ADC.ATTN_11DB)
# Initialize servos on GPIO 18 and 19
servo1 = PWM(Pin(18), freq=50)
servo2 = PWM(Pin(19), freq=50)
# Function to map joystick ADC value (0-4095) to servo duty (40-115)
def map_value(x, in_min, in_max, out_min, out_max):
return int((x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)
while True:
x_val = vrx.read()
y_val = vry.read()
duty1 = map_value(x_val, 0, 4095, 40, 115)
duty2 = map_value(y_val, 0, 4095, 40, 115)
servo1.duty(duty1)
servo2.duty(duty2)
print("X:", x_val, "→", duty1, " | Y:", y_val, "→", duty2)
time.sleep(0.1)