from machine import Pin, I2C
import dht
import time
from pico_i2c_lcd import I2cLcd
# ---- Setup ----
sensor = dht.DHT22(Pin(15))
i2c = I2C(0, sda=Pin(4), scl=Pin(5), freq=400000)
lcd = I2cLcd(i2c, 0x27, 2, 16) # try 0x3F if 0x27 doesn't show text
fan = Pin(16, Pin.OUT)
TEMP_THRESHOLD = 40.0 # °C - fan turns ON above this
HUM_THRESHOLD = 60.0 # % RH - fan turns ON above this
lcd.clear()
lcd.putstr("Agarbatti Dryer\nInitializing...")
time.sleep(2)
while True:
try:
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
lcd.clear()
lcd.putstr("T:{:.1f}C H:{:.1f}%".format(temp, hum))
if temp > TEMP_THRESHOLD or hum > HUM_THRESHOLD:
fan.value(1)
lcd.move_to(0, 1)
lcd.putstr("Fan: ON")
else:
fan.value(0)
lcd.move_to(0, 1)
lcd.putstr("Fan: OFF")
except OSError as e:
lcd.clear()
lcd.putstr("Sensor Error")
print("DHT read error:", e)
time.sleep(2)