arduino esp8266 dht11模块输出永远为nan或255或0如何解决

文章讲述了作者在使用ESP8266WiFi模块和DHT11温湿度传感器时遇到的数据读取错误。通过检查发现,问题源于ArduinoD1板子上的引脚编号与实际ESP8266的引脚不符。在查阅资料并理解ESP8266的引脚映射后,作者修正了接线,使DHT11的数据线正确连接到D9引脚,从而成功读取到温度和湿度数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

打开串口显示器,看到以上内容。上面的情况是我想测试是否是数据类型写错了,改成了char类型,导致输出为255,如果是float,这个错误显示为nan

首先,确定你的传感器是正常的,我是借朋友他已经测试好的arduino换上我的传感器,能正常显示数据,传感器正常。

后来我在这篇文章发现问题

ESP8266作为arduino D1 wifi模块应用时引脚序号说明(与UNO对比异同)2.5.0版本开发板库_TMS320VC5257H的博客-优快云博客

因为第一次接触物联网,一切都是csdn上面教的,买板子的时候买成了arduino uno wifi,自带esp8266,也成功连接到阿里云物联网平台,就是无法读出数据。这个和我看的演示文章的板子arduino uno相似,但是重点来了,wifi这个板子标注的引脚并非“真实”的引脚,根据上面这篇文章,查看我们引入的esp8266头文件的内容

我的路径是这个,依据自己的路径查找,建议下载一个everthing直接搜索

C:\Users\xxxx\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\variants\d1\pins_arduino.h

可以看到如果你定义引脚为2,其实对应的是D9,所以将dht11的data线接到D9就能正确的读到数据了 

错误的接线:可以看到我的data线接到了传统意义上的2引脚(跟有些文章的接线一模一样,新手很难发现问题)

 错误的数据显示:

 正确的引脚:也就是头文件里面对应的引脚

正确的数据显示:

测试代码如下:

#include <dht11.h>

dht11 DHT11;

#define DHT11PIN 2 

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  int chk = DHT11.read(DHT11PIN);
  Serial.print("Temperature: ");
  Serial.print(DHT11.temperature);
  Serial.print(" Celsius, Humidity: ");
  Serial.print(DHT11.humidity);
  Serial.println("%");
  delay(2000);
}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值