Arduino 温湿度传感器 DHT11 模块实验
网上有很多 DHT11 的测试,试了 N 个程序,总是不得要领,各种报错,最后终于找到一套
可用的库。
首先是 DHT11.h 文件
1. #ifndef __DHT11_H__
2. #define __DHT11_H__
3. #include <Arduino.h>
4. //DHT11 IO 设置
5. #define DHT11_DQ 2
6. #define DHT11_DQ_0 digitalWrite(DHT11_DQ,LOW)
7. #define DHT11_DQ_1 digitalWrite(DHT11_DQ,HIGH)
8.
9. //函数或者变量声明
10. extern void DHT11_Init();
11. extern unsigned char DHT11_Read_Byte();
12. extern void DHT11_Read();
13.
14. extern unsigned char HUMI_Buffer_Int;
15. extern unsigned char TEM_Buffer_Int;
16.
17. #endif
其次是 DHT11.cpp 文件
1. #include "DHT11.h"
2. //定义变量
3. unsigned char HUMI_Buffer_Int = 0;
4. unsigned char TEM_Buffer_Int = 0;
5. //****************************************************
6. //初始化 DHT11
7. //****************************************************
8. void DHT11_Init()
9. {
10. pinMode(DHT11_DQ,OUTPUT);
11. DHT11_DQ_0; //拉低总线,发开始信号;
12. delay(30); //延时要大于 18ms,以便 DHT11 能检测到开始信号;
13. DHT11_DQ_1;
14. delayMicroseconds(40); //等待 DHT11 响应;
15. pinMode(DHT11_DQ,INPUT);
16. while(digitalRead(DHT11_DQ) == HIGH);
17. delayMicroseconds(80); //DHT11 发出响应,拉低总线 80us;