from machine import Pin,ADC,PWM
import time
# potenciómetro conectado al pin GP28
pot = ADC(Pin(28))
# servo conectado al pin GP0
servo = PWM(Pin(0))
servo.freq(50) # frecuencia del servo 50 Hz
# valores mínimos y máximos del pulso del servo en nanosegundos
MIN = 500000
MAX = 2400000
# LEDs conectados a los pines GP6 a GP10
led1 = Pin(6, Pin.OUT)
led2 = Pin(7, Pin.OUT)
led3 = Pin(8, Pin.OUT)
led4 = Pin(9, Pin.OUT)
led5 = Pin(10, Pin.OUT)
while True:
# leer el valor del potenciómetro (0 a 65535)
valor = pot.read_u16()
print("pot:", valor) # mostrar el valor en la consola
# -------------------------------
# control del servo
# -------------------------------
# convertimos el valor del potenciómetro a un valor de duty del servo
# duty_ns toma un valor entre MIN y MAX
duty = MIN + (valor * (MAX - MIN) // 65535)
servo.duty_ns(duty)
# -------------------------------
# control de los LEDs
# -------------------------------
# dividimos el rango del potenciómetro en 5 partes
# 65535 / 5 = 13107
# cada rango corresponde a un LED que se enciende
if valor < 13107:
# ningún LED encendido
led1.value(0)
led2.value(0)
led3.value(0)
led4.value(0)
led5.value(0)
elif valor < 26214:
# solo led1 encendido
led1.value(1)
led2.value(0)
led3.value(0)
led4.value(0)
led5.value(0)
elif valor < 39321:
# led1 y led2 encendidos
led1.value(1)
led2.value(1)
led3.value(0)
led4.value(0)
led5.value(0)
elif valor < 52428:
# led1, led2 y led3 encendidos
led1.value(1)
led2.value(1)
led3.value(1)
led4.value(0)
led5.value(0)
elif valor < 65535:
# led1 a led4 encendidos
led1.value(1)
led2.value(1)
led3.value(1)
led4.value(1)
led5.value(0)
else:
# todos los leds encendidos
led1.value(1)
led2.value(1)
led3.value(1)
led4.value(1)
led5.value(1)
# pequeña pausa para que el cambio sea visible
time.sleep(0.2)