我想通过DHT11传感器和ESP8266测量温度和湿度。
为此,我使用两个库编写了一些代码。
但是这些都不能给我准确的湿度和温度值。
我能得到的输出如下:
Temperature = 21.0000
Humidity = 48.0000
#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));