############################
# E012_ADC.PY: Lee entrada conversor analógico-digital ADC
# ENTRADAS: ADC en GPIO34 entre 0 y +3.3v
# SALIDAS: Lectura ADC en voltios GPIO27/26 LED verde/rojo
############################
import machine
import time
# Configura el pin ADC
pin_adc = 34
adc = machine.ADC(machine.Pin(pin_adc))
# Configura el rango del ADC a 0-3.3v (defecto 0-1v)
adc.atten(machine.ADC.ATTN_11DB)
# Configura los pines para los LED
pin_led_verde = 27
pin_led_rojo = 26
led_verde = machine.Pin(pin_led_verde, machine.Pin.OUT)
led_rojo = machine.Pin(pin_led_rojo, machine.Pin.OUT)
# Realiza la lectura analógica de 0 a 3.3V y controla los LED
# El ADC es de 12bits por tanto 2^12-1=4095 niveles
def leer_adc():
valor_adc = adc.read()
voltaje = (valor_adc / 4095) * 3.3
return voltaje
t = .5 # tiempo de parpadeo del LED
limite = 1.65
print('USO DE ADC CON POTENCIÓMETRO')
print('Gira el potenciómetro')
# Ejemplo de uso
try:
while True:
valor = leer_adc()
# Controla los LED según umbral de entrada
if valor > limite: # Si la tensión supera la mitad del rango
estado = 'superado límite ' + str(limite) + 'v'
led_verde.off() # Apaga el LED verde
led_rojo.on() # Enciende el LED rojo
time.sleep(t) # Parpadea el LED rojo
led_rojo.off()
else:
estado = 'normal'
led_rojo.off() # Apaga el LED rojo
led_verde.on() # Enciende el LED verde
time.sleep(t) # Parpadea el LED verde
led_verde.off()
print(f'Valor ADC: {valor}v, {estado}')
time.sleep(t) # Espacio entre lecturesa
except KeyboardInterrupt:
print("\nLectura ADC detenida.")
# Asegúrate de apagar los LED al detener el script
led_verde.off()
led_rojo.off()