// 示例测试代码,用于测试各种DHT温湿度传感器
// 班级: 1609221/1609222
// 需要以下Arduino库:
// - DHT传感器库:https://github.com/adafruit/DHT-sensor-library
// - Adafruit统一传感器库:https://github.com/adafruit/Adafruit_Sensor
#include "DHT.h"
#define DHTPIN 4 // DHT传感器连接的数字引脚
// 引脚选择注意事项:
// - 如果使用的是Feather HUZZAH ESP8266,可使用引脚3、4、5、12、13或14
// - 引脚15也可以使用,但上传程序时需要断开DHT传感器。
// 根据你使用的传感器类型,取消注释对应的定义:
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// 硬件连接指南:
// - 将传感器的引脚1(左侧)连接到+5V(对于3.3V逻辑电平的板子,如Arduino Due,连接到3.3V)
// - 将传感器的引脚2连接到定义的DHTPIN
// - 将传感器的引脚4(右侧)连接到GND
// - 在传感器的引脚2(数据)和引脚1(电源)之间连接一个10kΩ电阻
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println(F("移动机器人温湿度传感器DHTxx测试!160922166李大猛"));
dht.begin();
}
void loop() {
delay(1000); // 每次测量之间延迟1秒
// 读取传感器数据
float humidity = dht.readHumidity();
float temperatureC = dht.readTemperature();
float temperatureF = dht.readTemperature(true);
// 检查读取是否成功
if (isnan(humidity) || isnan(temperatureC) || isnan(temperatureF)) {
Serial.println(F("无法从DHT传感器读取数据!请检查连接。"));
return;
}
// 计算热指数
float heatIndexC = dht.computeHeatIndex(temperatureC, humidity);
float heatIndexF = dht.computeHeatIndex(temperatureF, humidity);
// 输出数据到串口监视器
Serial.print(F("湿度: "));
Serial.print(humidity);
Serial.print(F("% 温度: "));
Serial.print(temperatureC);
Serial.print(F("°C / "));
Serial.print(temperatureF);
Serial.print(F("°F 热指数: "));
Serial.print(heatIndexC);
Serial.print(F("°C / "));
Serial.print(heatIndexF);
Serial.println(F("°F"));
}