我试图从连接到我的ESP32板上的DHT22传感器(https://www.aliexpress.com/item/32893654102.html?spm=a2g0s.9042311.0.0.1fae4c4dSLLDyP)获取一个值,但是即使从示例程序中,我也从湿度函数和-3200 C附近的温度获得NaN。 / p>
这是代码
#include "DHT.h"
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");
dht.begin();
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
}
您有什么想法,为什么会这样?我有错误的东西吗? 感谢您的建议。
答案 0 :(得分:1)
这可能不是正确的答案,但是我会解释,您可以对其进行测试。我没有DHT22,但是如果我以前在Arduino上使用DHT22的记忆是正确的,则DHT22是一个非常慢的传感器(占用250mS)来获取温度数据。所以我建议稍微修改一下程序:
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
// Check if any reads failed and exit to try again
if (isnan(h) || isnan(t)) {
delay(10); // you can fine tune this delay
return;
}
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
delay(2000);
}