from time import sleep_us,sleep
from time import sleep
import dht
from lcd_api import LcdApi
from i2c_lcd import I2cLcd
import machine
import time
sensor = dht.DHT22(Pin(33))
I2C_ADDR = 0x27
i2c = SoftI2C(scl=Pin(21), sda=Pin(22), freq=10000)
lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)
echo=Pin(25,Pin.IN)
trig=Pin(26,Pin.OUT)
def display_dht(t):
global hum
global temp
lcd.move_to(0,0)
lcd.putstr("T:{:.0f} C".format(temp))
lcd.move_to(7,0)
lcd.putstr("H:{:.0f} %".format(hum))
tim1 = Timer(1)
tim1.init(period=10000, mode=Timer.PERIODIC, callback=display_dht)
while True:
try:
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
except OSError as e:
print('Failed to read sensor.')
trig.on()
time.sleep_us(10)
trig.off()
x=machine.time_pulse_us(echo,1, 30000)
distance= (x / 4) / 29.1 *2 -1.6 #using 0.034 instead of 0.0343 to get right value
print('Distance:', distance, 'cm')
lcd.move_to(0,1)
lcd.putstr('{:.0f}'.format(distance)+' cm')
sleep(0.5)