from machine import Pin, ADC, I2C
import time
import dht
from pico_i2c_lcd import I2cLcd
# --- Configuración de pines ---
led = Pin(14, Pin.OUT)
rele = Pin(15, Pin.OUT)
sensor = dht.DHT22(Pin(27))
pot = ADC(Pin(26))
# --- Configuración I2C LCD ---
I2C_ADDR = 0x27 # Dirección detectada para tu LCD
i2c = I2C(0, scl=Pin(1), sda=Pin(0), freq=100000)
# --- Verificación de dispositivo I2C ---
dispositivos = i2c.scan()
print("Dispositivos I2C encontrados:", [hex(dev) for dev in dispositivos])
if I2C_ADDR not in dispositivos:
print("ERROR: No se detectó el LCD en la dirección 0x27. Verifica conexiones y dirección I2C.")
while True:
time.sleep(1) # Detiene el programa aquí para evitar errores
# --- Inicialización LCD ---
lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)
def leer_objetivo():
valor_adc = pot.read_u16()
temp_obj = (valor_adc / 65535) * 80
return round(temp_obj, 1)
while True:
try:
sensor.measure()
temp = sensor.temperature()
objetivo = leer_objetivo()
lcd.clear()
lcd.putstr("Temp:{:>5.1f}C".format(temp))
lcd.putstr("\nObj :{:>5.1f}C".format(objetivo))
print("Temperatura:",(temp))
print("Potencia",(objetivo))
if temp >= objetivo:
rele.value(1)
led.value(1)
else:
rele.value(0)
led.value(0)
time.sleep(1)
except Exception as e:
lcd.clear()
lcd.putstr("Error:\n{}".format(e))
time.sleep(2)