from machine import Pin, SoftI2C
from lcd_api import LcdApi
from i2c_lcd import I2cLcd
from time import sleep
import dht
i2c = SoftI2C(scl=Pin(22), sda=Pin(21), freq=10000)
lcd = I2cLcd(i2c, 0x27, 2, 16)
led1 = Pin(5, Pin.OUT)
led2 = Pin(19, Pin.OUT)
dht_sensor = dht.DHT22(Pin(15))
while True:
try:
dht_sensor.measure()
temp = dht_sensor.temperature()
humidity = dht_sensor.humidity()
lcd.clear()
lcd.move_to(0, 0)
lcd.putstr(f"Temp: {temp:.1f}C")
lcd.move_to(0, 1)
lcd.putstr(f"Hum: {humidity:.1f}%")
sleep(2)
if temp > 50 and humidity > 40:
lcd.clear()
lcd.move_to(0, 0)
lcd.putstr("WARNING: DANGER!")
lcd.move_to(0, 1)
lcd.putstr(f"T:{temp:.1f}C H:{humidity:.1f}%")
for _ in range(3):
led1.on()
led2.on()
sleep(0.5)
led1.off()
led2.off()
sleep(0.5)
elif temp > 50:
lcd.clear()
lcd.move_to(0, 0)
lcd.putstr("Temp High!")
lcd.move_to(0, 1)
lcd.putstr(f"Temp: {temp:.1f}C")
for _ in range(3):
led1.on()
sleep(0.5)
led1.off()
sleep(0.5)
elif humidity > 40:
lcd.clear()
lcd.move_to(0, 0)
lcd.putstr("Humidity High!")
lcd.move_to(0, 1)
lcd.putstr(f"Hum: {humidity:.1f}%")
for _ in range(5):
led2.on()
sleep(0.5)
led2.off()
sleep(0.5)
else:
led1.off()
led2.off()
sleep(2)
except OSError as e:
lcd.clear()
lcd.move_to(0, 0)
lcd.putstr("Sensor Error")
sleep(2)