本帖最后由 董董soul 于 2016-10-27 11:07 编辑
DHT11是温湿度检测中非常常用的一款处理器。这节课我们学习一下怎样驱动它,然后通过串口输出当前环境的温湿度数据。
驱动DHT11我们会使用一个专门用于驱动它的库,什么是库呢?简单一点可以这么理解。库就是一个过程的集合。。。。貌似说的木有那么通俗。。。就用DHT11打比方,DHT11是单总线传感器,驱动他的时候我们需要写很多驱动代码,1,2,3,4步骤等等。。。。如果我们调用DHT11的库,在库中有一个函数叫做“启动”。当你运行“启动”函数时,就相当于运行了1,2,3,4这些步骤。代码结构就会更合理简洁易懂。
看一下硬件连接。
库文件有两种安装方法,首先介绍一下第一种。
我们打开IDE的目录,在里面可以找到libraries这个文件夹,该文件夹就是用来存放库文件的。
我们打开libraries,会看到各种库文件目录,我们把解压缩后的dht_sensor目录放在该文件夹下。
我们进一步打开dht_sensor文件夹,可以看到DHT.cpp和DHT.h。如果文件夹下不是.cpp和.h文件,又有一层dht_sensor那就会导致库无法使用,这点需要切记。
- // 这个例子用来驱动各款DHT温湿度传感器
- // Written by ladyada, public domain
- #include "DHT.h"
- #define DHTPIN 2 // 定义DHT温湿度传感器连接到的引脚
- // Uncomment whatever type you're using!
- #define DHTTYPE DHT11 // DHT 11
- //#define DHTTYPE DHT22 // DHT 22 (AM2302)
- //#define DHTTYPE DHT21 // DHT 21 (AM2301)
- // 传感器的1号引脚(在最左边)连接到+5V
- // 传感器的2号引脚连接到DHTPIN所定义的引脚
- // 传感器的4号引脚(在最右边)连接到GND
- // 在传感器的2号引脚(data)和1号引脚(vcc)之间连接一个10K电阻
- DHT dht(DHTPIN, DHTTYPE);
- void setup() {
- Serial.begin(9600);
- Serial.println("DHTxx test!");
-
- dht.begin();
- }
- void loop() {
- // 读取温度或者湿度大约需要250毫秒时间
- // 传感器读取数据也可能超过2秒(它是一个反应速度很慢的传感器)
- float h = dht.readHumidity();
- float t = dht.readTemperature();
- // 检查返回的数据是否是幼小的,如果是非数字数据,那么就说明出错了。
- if (isnan(t) || isnan(h)) {
- Serial.println("Failed to read from DHT");
- } else {
- Serial.print("Humidity: ");
- Serial.print(h);
- Serial.print(" %\t");
- Serial.print("Temperature: ");
- Serial.print(t);
- Serial.println(" *C");
- }
- }
复制代码
|