from machine import Pin, ADC, PWM # Importación de módulos necesarios para controlar el hardware y los tiempos
import time
x = ADC(Pin(26)) # Configura el pin GP26 como entrada analógica (ADC)
button = Pin(15, Pin.IN, Pin.PULL_UP) # Configura el pin GP15 como entrada digital para el botón
servo = PWM(Pin(14)) # Configura el pin GP14 para controlar el Servomotor mediante Modulación por Ancho de Pulsos (PWM)
servo.freq(50) # Define la frecuencia del PWM a 50Hz, que es la frecuencia estándar para los servomotores
def map_value(val, in_min, in_max, out_min, out_max):
return int((val - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)
while True:
x_val = x.read_u16() # Lee la posición actual del eje X del joystick (devuelve un valor entre 0 y 65535)
angle = map_value(x_val, 0, 65535, 0, 180) # Convierte la lectura analógica del joystick (0–65535) a un ángulo de giro (0–180 grados)
duty = int(map_value(angle, 0, 180, 2000, 8000))
servo.duty_u16(duty) # Aplica el ciclo de trabajo al pin del servo para que se mueva a la posición deseada
print("X:", x_val, "Ángulo servo:", angle, "Duty:", duty) # Imprime los datos actuales en la terminal para poder monitorear el comportamiento
if button.value() == 0:
print("Botón presionado")
time.sleep(0.1) # Pausa el bucle por 0.1 segundos (100 milisegundos)