【发布时间】:2017-04-13 23:31:36
【问题描述】:
我正在尝试从带有 arduino uno R3 的 DHT-11 传感器读取温度和湿度
#include <DHT.h>
#include <LiquidCrystal.h>
#define DHTPIN A3
#define DHTTYPE DHT11
DHT dht(DHTPIN,DHTTYPE);
LiquidCrystal lcd(5,8,9,10,11,12);
String hum="Humidity:";
String temptext="Temp:";
void setup() {
Serial.begin(9600);
lcd.clear();
lcd.begin(16,2);
dht.begin();
}
void loop() {
float humidity = dht.readHumidity();
delay(500);
float temp = dht.readTemperature();
delay(500);
Serial.println(hum+humidity);
Serial.println(temptext+temp);
lcd.clear();
lcd.print(hum + humidity);
lcd.setCursor(0,2);
lcd.print(temptext+temp);
delay (5000);
}
我确定我的接线是正确的。 DHT-11 只报告 NAN 的可能原因是什么?会不会坏了(我刚拆包)?
【问题讨论】:
-
DHT11 不发送任何浮点类型。对于每个读数,它发送 2 个字节:整数值和小数值。所以任何
NAN都必须是您的代码的结果。在开发从设备读取的代码时,第一步是打印它发送的原始数据,然后你可以看看这是否有意义,根据data sheet。 -
我不这样做,因为包含的库
应该为我这样做。 arduino playground 有一个教程,它使用 lib 从 dht11 传感器读取数据。我密切关注它,但没有收到我预期的结果。我是编程新手,也是 arduino 本身的新手,我尝试了简单的方法,但没有成功。我不认为我会使用(更)更难的方法取得成功,因为我在该领域的知识是有限的,充其量 -
@BenceKaulics 请问您的观点是什么?你能贡献一些相关的东西吗?
-
@WeatherVane 根据示例,OP 代码是正确的。创建一个实例并调用
begin,然后调用读数。一切都在幕后处理,这就是适合您的 Arduino。该示例还检查 NAN 并将其视为错误,"Failed to read from DHT sensor!"。也许是硬件问题,不知道原理图就很难说。大多数 Arduino 人不阅读数据表,他们使用的库正是我想告诉你的。 -
如果这是 Arduino 所做的,那么我删除了 C 标签:
Serial.println(hum+humidity);不能在 C 中工作,其中hum是一个字符串,humidityisfloat。
标签: arduino sensors arduino-uno