from machine import Pin, ADC, PWM
import time
# Configuración del servomotor en GPIO 16
servo = PWM(Pin(16))
servo.freq(70)
# Configuración del potenciómetro en ADC0 (GPIO 26)
pot = ADC(Pin(26))
# Función para mover el servomotor
def set_servo_angle(angle):
# Convierte el ángulo (0-360) en un duty cycle (duty_us) correspondiente (500-2500)
min_duty = 1000 # 1 ms pulse (mínimo para la mayoría de servos)
max_duty = 9000 # 2 ms pulse (máximo para la mayoría de servos)
duty = min_duty + (angle / 360.0) * (max_duty - min_duty)
servo.duty_u16(int(duty))
while True:
# Leer el valor del potenciómetro
pot_value = pot.read_u16()
# Convertir el valor del potenciómetro (0-65535) a un ángulo (0-360)
angle = (pot_value / 60000.0) * 360
# Ajustar el ángulo del servomotor
set_servo_angle(angle)
# Esperar un poco antes de la siguiente lectura
time.sleep(0.1)