from machine import Pin, I2C
from time import sleep
import dht
from i2c_lcd import I2cLcd
# Initialize DHT22 sensor on GPIO15
sensor = dht.DHT22(Pin(28)) # Use DHT11 if your sensor is DHT11
# Setup I2C for LCD (SDA=GP0, SCL=GP1)
i2c = I2C(0, scl=Pin(1), sda=Pin(0), freq=400000)
# Create LCD instance (0x27 is I2C address of LCD)
lcd = I2cLcd(i2c, 0x27, 2, 16)
# Wait for sensor to stabilize
sleep(2)
while True:
try:
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
# Print to serial monitor
print("Temperature: {:.1f} °C Humidity: {:.1f} %".format(temp, hum))
# Show on LCD
lcd.clear()
lcd.putstr("Temp: {:.1f} C".format(temp))
lcd.move_to(0, 1)
lcd.putstr("Hum : {:.1f} %".format(hum))
except Exception as e:
# Print error to serial
print("Sensor Error:", e)
# Show on LCD
lcd.clear()
lcd.putstr("Sensor Error")
sleep(2)