#include <LiquidCrystal_I2C.h>
#include "DHTesp.h"
// 设置LCD地址为0x27,20个字符宽和4行高的显示
LiquidCrystal_I2C lcd(0x27, 20, 4);
const int DHT_PIN = 15; // 定义DHT传感器连接的引脚
DHTesp dhtSensor;
void setup() {
Serial.begin(115200); // 初始化串行通信
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); // 初始化DHT传感器
lcd.init(); // 初始化LCD
lcd.backlight(); // 打开LCD背光
// 显示初始信息
Wire.begin(16, 5);; // 设置LCD光标位置
lcd.print("Temperature message");
lcd.setCursor(0, 1); // 设置LCD光标到第二行
lcd.print("LCD with ESP32");
delay(6000); // 显示初始信息3秒钟
}
void loop() {
lcd.clear(); // 清除LCD显示
TempAndHumidity data = dhtSensor.getTempAndHumidity();
// 检查数据是否有效
if (dhtSensor.getStatus() == 0) {
// 显示温度
lcd.setCursor(1, 2); // 设置LCD光标位置
lcd.print("Temp: ");
lcd.print(data.temperature, 1); // 显示温度,保留一位小数
lcd.print("*C");
// 显示湿度
lcd.setCursor(0, 1); // 设置LCD光标到第二行
lcd.print("Humidity: ");
lcd.print(data.humidity, 1); // 显示湿度,保留一位小数
lcd.print("%");
} else {
// 如果读取失败,显示错误信息
lcd.setCursor(0, 0); // 设置LCD光标位置
lcd.print("Error reading");
lcd.setCursor(0, 1); // 设置LCD光标到第二行
lcd.print("sensor!");
}
delay(2000); // 等待2秒钟再次读取
}