雏雁-Arduino部分(三)DHT11传感器使用

引入库清单

1
2
3
#include <DHT.h>
//下面这个是依赖库,得自己下载
#include <Adafruit_Sensor.h>

DHT.h库使用

DHT11传感器有3跟引脚(四根引脚的第三根没啥用),其中data引脚是我们要处理的,本例将data连接到arduino的pin9引脚上。
和lcd差不多,设引脚,实例,初始化,然后就可以用了。
dht.begin();一定要写,不然会报错(NAN)。别问!

delay(1000)是据说这传感器通电前1s不稳定,所以要等1s再读取数据。我没感觉出来但不差这1s,所以就写上了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <Arduino.h>
#include <DHT.h>
#include <Adafruit_Sensor.h>

//pin defination
#define PIN_DHT 9 // DHT11 data pin
//dhttype defination
#define DHTTYPE DHT11

DHT dht(PIN_DHT, DHTTYPE);

void setup() {
// dht begin
dht.begin();
delay(1000);
}

读取温湿度信息

我们调用函数dht.readTemperature()dht.readHumidity()读取温湿度信息。读取来的是浮点数。
然后我们用上一篇说的打印到lcd。
我们说过lcd.print()函数参数是字符串,所以用String(t, 1)函数一方面转换数据类型,另一方面通过第二个参数控制小数点后位数。

1
2
3
4
5
6
7
8
9
10
11
12
//read dht11
float t = dht.readTemperature();
float h = dht.readHumidity();
// print dht11 data on lcd
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(String(t, 1));
lcd.print("C");
lcd.setCursor(8, 0);
lcd.print("H:");
lcd.print(String(h, 0));
lcd.print("%");