#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// 引脚定义
#define DHTPIN PA0
#define DHTTYPE DHT22
// 初始化对象
// 0x27 是 PCF8574 的默认 I2C 地址,LCD1602 为 16列 2行
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// 串口初始化用于调试
Serial.begin(115200);
// LCD 初始化
lcd.init();
lcd.backlight();
// DHT 传感器初始化
dht.begin();
// 开机欢迎界面
lcd.setCursor(0, 0);
lcd.print("STM32 Monitor");
lcd.setCursor(0, 1);
lcd.print("Initializing...");
delay(2000);
lcd.clear();
}
void loop() {
// 读取温湿度 (读取间隔至少 2秒)
float h = dht.readHumidity();
float t = dht.readTemperature();
// 检查是否读取失败
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
lcd.setCursor(0, 0);
lcd.print("Sensor Error!");
return;
}
// 串口输出
Serial.print("Humidity: ");
Serial.print(h);
Serial.print("% Temperature: ");
Serial.print(t);
Serial.println("C");
// LCD 静态文本显示
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(t, 1); // 保留一位小数
lcd.print((char)223); // 显示摄氏度符号 °
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Humid: ");
lcd.print(h, 1);
lcd.print("%");
delay(2000); // 刷新频率
}
Loading
st-nucleo-c031c6
st-nucleo-c031c6