############################
# E048_FOTORESISTOR.PY: Fotoresistor GL5539© con ADC
# ENTRADAS: ADC en GPIO32 entre 0 y +3.3V
# SALIDAS: Lectura ADC en voltios GPIO27/26 LED verde/rojo
############################
from machine import Pin, ADC # Gestión GPIO y ADC
import time # Gestión de tiempos
# Configura el pin ADC
pin_adc = 32
adc = ADC(Pin(pin_adc))
# Configura el rango del ADC a 0-3.3V (defecto 0-1V)
adc.atten(ADC.ATTN_11DB)
# Configura los pines para los LED
led_verde = Pin(26, Pin.OUT)
led_rojo = Pin(27, Pin.OUT)
# Parámetros del script
t_lectura = .5 # Tiempo entre lecturas
alarma = 97000 # Nivel de alarma
# Realiza la lectura analógica de 0 a +3.3V
# El ADC es de 12bits por tanto 2^12=4.096 niveles
def leer_adc():
valor_adc = adc.read() # Convierte nivel en Lux
lux = (4096-valor_adc) * 100000 / 4096
return lux
# Cuerpo principal del script
led_verde.on()
print('FOTORESISTOR GL5539©')
print('Ilumina el fotoresistor...')
try:
while True:
valor = leer_adc() # Vista en Plóter
print(f'Luz:, {valor} Lux') # Traza para Plóter
if valor > alarma: # Nivel de alarma
led_rojo.on() # Enciende LED rojo
time.sleep(.1)
led_rojo.off()
time.sleep(.1)
time.sleep(t_lectura) # Espacio entre lecturas
except KeyboardInterrupt:
print('Script terminado...')
led_verde.off() # Apaga LED
led_rojo.off()
adc = None # Libera ADC