当我尝试使用 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 编写的,但文档中从未提及。
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 编写的,但文档中从未提及。