from machine import Pin, ADC, I2C
from time import sleep
from i2c_lcd import I2cLcd
# --- Configuración LCD I2C ---
i2c = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
lcd_addr = i2c.scan()[0] # Detectar dirección del LCD automáticamente
lcd = I2cLcd(i2c, lcd_addr, 2, 16)
# --- Configuración del potenciómetro (sensor de luz) ---
sensor_luz = ADC(Pin(34))
sensor_luz.atten(ADC.ATTN_11DB)
sensor_luz.width(ADC.WIDTH_10BIT)
# --- LEDs ---
led_rojo = Pin(2, Pin.OUT)
led_verde = Pin(4, Pin.OUT)
UMBRAL_LUZ = 500 # Lux mínimo
# Historial (simulado como salida en monitor serie)
historial = []
def leer_luz():
valor_adc = sensor_luz.read()
lux = int((valor_adc / 1023) * 1000) # Escalar a 0-1000 lux
return lux
while True:
lux = leer_luz()
if lux < UMBRAL_LUZ:
led_rojo.on()
led_verde.off()
estado = "LUZ BAJA"
else:
led_rojo.off()
led_verde.on()
estado = "LUZ SUFICIENTE"
# Guardar historial en monitor serie
historial.append(f"Luz: {lux} lux | Estado: {estado}")
print(historial[-1])
# Mostrar en LCD
lcd.clear()
lcd.putstr(f"Luz: {lux} lux")
lcd.move_to(0, 1)
lcd.putstr(f"Estado: {estado}")
sleep(2)