当我尝试使用 C 在 ESP8266 上使用 DHT11 读取温度时得到 'NaN'

Getting 'NaN' when I try to read temperatures with DHT11 on ESP8266 with C

Pictures of the wiring of the DHT11 to the ESP

当我尝试以华氏度、摄氏度读取温度并获取湿度时,它总是在串行监视器上显示 'nan'。我正在使用 Arduino IDE 和通用 ESP8266 模块,我安装了库“DHT-Sensor-Library”和“Adafruit-Unified-Sensor”-Library。

我知道它代表“不是数字”,但为什么呢?我之前看过这里并尝试使用 (isnan) 并将其存储在备份变量中,但这也没有用。

#include <DHT.h>
#include <DHT_U.h>

#define DHT_TYPE  DHT11

#define DHT_PIN   5

#define DHT_POWER 0

DHT dht(DHT_PIN, DHT_TYPE);

const long interval = 2000;

void setup(void) 
{
  pinMode( DHT_POWER, OUTPUT );
  digitalWrite( DHT_POWER, HIGH );

  dht.begin();

  Serial.begin(115200);
  delay(500);
  Serial.println("\nDHT running\n");
}

void loop(void)
{
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  float f = dht.readTemperature(true);
  
  Serial.println( "Luftfeuchtigkeit: " + (String)h + " % ");
  Serial.println( "Temperatur      : " + (String)t + " °C");
  Serial.println( "Temperatur      : " + (String)f + " F \n");

  delay(interval);
}

您似乎在尝试直接从 GPIO 引脚为 DHT11 供电。
GPIO 引脚用于发送信号。当你用它们来获得力量时,结果可能是不可预测的。

相反,尝试从“始终开启”的 3.3V 引脚之一为其供电。
如果这不起作用,请尝试从外部电源(最好是 5V)为 DHT11 供电。
如果这不起作用,请post一张你的电路图片。

我知道了:

代码从未为 ESP8266 编写,它是为 LOLIN (Wemos) D1 R2 & mini 编写的,但文档中从未提及。