DHT22和ESP32-湿度不正常且温度不正确

时间:2019-11-23 10:28:00

标签: arduino esp32

我试图从连接到我的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");
}

您有什么想法,为什么会这样?我有错误的东西吗? 感谢您的建议。

1 个答案:

答案 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);
}