// DHT温湿度传感器测试程序 / DHT-Sensor Testprogramm
// 适用于移动机器人项目 / Für mobile Roboterprojekte
// 作者:李大猛 (160922166) / Autor: Li Dament (160922166)
// 引入DHT传感器库 / DHT-Sensorbibliothek einbinden
#include "DHT.h"
// 定义传感器连接引脚 / Sensorpin definieren
#define DHTPIN 4
// 引脚选择注意事项(针对不同开发板):
// - Feather HUZZAH ESP8266: 可使用引脚3,4,5,12,13,14
// - 引脚15也可用,但上传程序时需断开传感器
// 定义传感器类型(取消注释使用的型号) / Sensortyp definieren
//#define DHTTYPE DHT11 // DHT11传感器
#define DHTTYPE DHT22 // DHT22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT21 (AM2301)
// 硬件连接指南(中文):
// 1. 传感器引脚1(左侧) → +5V(3.3V板子接3.3V)
// 2. 传感器引脚2 → DHTPIN
// 3. 传感器引脚4(右侧) → GND
// 4. 在引脚2(数据)和引脚1(电源)间加10kΩ上拉电阻
// Hardware-Anschlussanleitung (Deutsch):
// 1. Sensorpin 1 (links) → +5V (3.3V-Boards: 3.3V)
// 2. Sensorpin 2 → DHTPIN
// 3. Sensorpin 4 (rechts) → GND
// 4. 10kΩ Pull-up-Widerstand zwischen Pin 2 (Daten) und Pin 1 (Strom)
// 创建DHT传感器对象 / DHT-Sensorobjekt erstellen
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// 初始化串口通信 / Serielle Kommunikation initialisieren
Serial.begin(9600);
Serial.println(F("移动机器人温湿度传感器DHTxx测试!160922166李大猛"));
Serial.println(F("DHT-Sensor Test für mobile Roboter! Autor: Li Dament"));
// 初始化传感器 / Sensor initialisieren
dht.begin();
}
void loop() {
// 测量间隔延迟 / Messintervall-Pause
delay(1000); // 1秒延迟 / 1 Sekunde Pause
// 读取传感器数据 / Sensordaten auslesen
float humidity = dht.readHumidity(); // 湿度值 / Luftfeuchtigkeit
float temperatureC = dht.readTemperature(); // 摄氏温度 / Temperatur (°C)
float temperatureF = dht.readTemperature(true); // 华氏温度 / Temperatur (°F)
// 数据有效性检查 / Datenvalidität prüfen
if (isnan(humidity) || isnan(temperatureC) || isnan(temperatureF)) {
Serial.println(F("无法从DHT传感器读取数据!请检查连接。"));
Serial.println(F("Kann keine Daten vom DHT-Sensor lesen! Bitte Verbindung prüfen."));
return;
}
// 计算热指数(舒适度指标) / Hitzeindex berechnen
float heatIndexC = dht.computeHeatIndex(temperatureC, humidity);
float heatIndexF = dht.computeHeatIndex(temperatureF, humidity);
// 输出结果到串口监视器 / Ergebnisse ausgeben
Serial.print(F("湿度: ")); Serial.print(humidity); Serial.print(F("% "));
Serial.print(F("温度: ")); Serial.print(temperatureC); Serial.print(F("°C / "));
Serial.print(temperatureF); Serial.print(F("°F "));
Serial.print(F("热指数: ")); Serial.print(heatIndexC); Serial.print(F("°C / "));
Serial.print(heatIndexF); Serial.println(F("°F"));
// Deutsche Ausgabe
Serial.print(F("Feuchtigkeit: ")); Serial.print(humidity); Serial.print(F("% "));
Serial.print(F("Temperatur: ")); Serial.print(temperatureC); Serial.print(F("°C / "));
Serial.print(temperatureF); Serial.print(F("°F "));
Serial.print(F("Hitzeindex: ")); Serial.print(heatIndexC); Serial.print(F("°C / "));
Serial.print(heatIndexF); Serial.println(F("°F"));
}