import dht, machine, time
from machine import Pin, I2C
from i2c_lcd import I2cLcd
# Initialize DHT22 sensor
dht_sensor = dht.DHT22(machine.Pin(5)) # GPIO 5 for DHT22
# Initialize HC-SR04 sensor pins
trigger = machine.Pin(21, machine.Pin.OUT) # GPIO 21 for trigger
echo = machine.Pin(19, machine.Pin.IN) # GPIO 19 for echo
# Function to get distance from HC-SR04
def get_distance():
trigger.value(0)
time.sleep_us(2)
trigger.value(1)
time.sleep_us(10)
trigger.value(0)
pulse_time = machine.time_pulse_us(echo, 1, 30000) # 30ms timeout for 5m range
distance_cm = (pulse_time * 0.0343) / 2
return distance_cm
# Initialize I2C for LCD and create LCD object
i2c = I2C(scl=Pin(22), sda=Pin(21)) # GPIO 22, GPIO 21 for I2C
lcd = I2cLcd(i2c, 0x27, 2, 16) # Change 0x27 to your LCD address
while True:
# Read temperature and humidity from DHT22
dht_sensor.measure()
temp_c = dht_sensor.temperature()
humidity = dht_sensor.humidity()
# Read distance from HC-SR04
distance = get_distance()
# Display sensor data on LCD
lcd.clear()
lcd.putstr("Temp: {}C\n".format(temp_c))
lcd.putstr("Humidity: {}%\n".format(humidity))
lcd.putstr("Distance: {}cm".format(distance))
time.sleep(5) # Adjust the interval as needed