打开串口显示器,看到以上内容。上面的情况是我想测试是否是数据类型写错了,改成了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);
}