from machine import I2C, Pin
from pico_i2c_lcd import I2cLcd
import dht
import utime
# Initialize I2C communication
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
# Scan for the LCD address
I2C_ADDR = i2c.scan()[0]
# Initialize LCD object
lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)
# Define pin for DHT22 sensor
DHT_PIN = 10
# Create DHT22 sensor object
dht_sensor = dht.DHT22(machine.Pin(DHT_PIN))
# Function to read sensor data
def read_sensor_data():
try:
# Measure temperature and humidity
dht_sensor.measure()
temperature = dht_sensor.temperature()
humidity = dht_sensor.humidity()
return temperature, humidity
except Exception as e:
# Print error if reading fails
print("Error reading sensor:", e)
return None, None
# Main loop
while True:
# Read sensor data
temp, hum = read_sensor_data()
# Display data on LCD if available
if temp is not None and hum is not None:
lcd.putstr("Temperature: {},Humidity: {}".format(temp, hum))
else:
# Print error if data is not available
print("Failed to read sensor.")
# Delay for 1 second
utime.sleep(1)