import machine
import time
import dht
from machine import Pin, I2C
from hcsr04 import HCSR04
from i2c_lcd import I2cLcd
dht_pin = Pin(15)
dht_sensor = dht.DHT22(dht_pin)
ultrasonic_sensor = HCSR04(trigger_pin=18, echo_pin=19)
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=400000)
lcd_address = 0x27
lcd = I2cLcd(i2c, lcd_address, 2, 16)
def get_distance():
distance = ultrasonic_sensor.distance_cm()
return distance
def get_temperature_humidity():
try:
dht_sensor.measure()
temp = dht_sensor.temperature()
humidity = dht_sensor.humidity()
return temp, humidity
except OSError as e:
return None, None
while True:
lcd.clear()
temp, humidity = get_temperature_humidity()
distance = get_distance()
if temp is not None and humidity is not None:
lcd.move_to(0, 0)
lcd.putstr("T:{:.1f}C H:{:.1f}%".format(temp, humidity))
else:
lcd.move_to(0, 0)
lcd.putstr("DHT22 Error")
lcd.move_to(0, 1)
lcd.putstr("Dist:{:.2f}cm".format(distance))
time.sleep(2)