from machine import Pin, ADC, PWM
import time
# 1. Configuración del ADC en el pin GP26 (ADC0) para leer el potenciómetro
potenciometro = ADC(Pin(26))
# 2. Configuración del PWM en el pin GP16 para controlar el brillo del LED
# Frecuencia de 1000 Hz (1 kHz)
led_pwm = PWM(Pin(16))
led_pwm.freq(1000)
print("Sistema ADC y PWM iniciado...")
while True:
# 3. Leer el valor analógico del potenciómetro
# La Pico devuelve un valor entero de 16 bits (de 0 a 65535)
valor_adc = potenciometro.read_u16()
# 4. Calcular el voltaje aproximado (0.0V a 3.3V)
voltaje = (valor_adc / 65535) * 3.3
# 5. Convertir la lectura a un porcentaje (0 a 100%)
porcentaje = (valor_adc / 65535) * 100
# 6. Relacionar el porcentaje con el ciclo de trabajo (Duty Cycle) del PWM
# El PWM en MicroPython acepta valores de 0 a 65535
ciclo_trabajo = valor_adc # Como el rango es el mismo, podemos asignarlo directamente
led_pwm.duty_u16(ciclo_trabajo)
# 7. Mostrar los resultados en el monitor serial
print(f"ADC: {valor_adc} | Voltaje: {voltaje:.2f} V | Brillo: {porcentaje:.1f}%")
# Pausa corta para no saturar la lectura en pantalla
time.sleep(0.2)