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

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

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

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

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

因为第一次接触物联网,一切都是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);
}

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值