问题描述
我想测量DHT11传感器和ESP8266的温度和湿度。 为此,我使用两个库编写了一些代码。
但是这些都不能给我准确的湿度和温度值。 我能得到的输出如下。
#include <DHTesp.h>
DHTesp dht;
void setup(){
Serial.begin(9600);
pinMode(0,INPUT);
dht.setup(0,DHTesp::DHT11);
}
void loop(){
Serial.print("Temperature = ");
Serial.println(dht.getTemperature(),4);
Serial.print("Humidity = ");
Serial.println(dht.getHumidity(),4);
delay(1000);
}
第二个代码
#include <DHT.h>
DHT dht(0,DHT11);
void setup() {
Serial.begin(9600);
pinMode(0,INPUT);
dht.begin();
}
void loop() {
float humidity = dht.readHumidity();
float temp = dht.readTemperature();
delay(500);
Serial.println(humidity);
}
解决方法
从DHT11 datasheet开始,它仅支持1摄氏度的分辨率和8位的湿度分辨率,导致浮点数之类的整数。
DHT11和DHT22输出的单位也要牢记。
温度返回为摄氏温度,湿度是介于0到100之间的值,代表相对湿度。
要在摄氏温度和华氏温度之间转换,可以使用以下公式
Serial.print((int)round(1.8*temp+32));