/* How to use the DHT-22 sensor with Arduino uno
Temperature and humidity sensor
*/
//Libraries
#include <DHT.h>;
#define tem_command 0x11
#define hum_command 0x10
//Constants
#define DHTPIN 2 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE); //// Initialize DHT sensor for normal 16mhz Arduino
byte comdata[3] = {0};
void receive_data(void); //接收串口数据
void test_do_data(void); //测试串口数据是否正确,并执行命令
//Variables
int chk;
float hum; //Stores humidity value
float temp; //Stores temperature value
void setup()
{
Serial.begin(9600);
dht.begin();
}
void loop() {
while (Serial.available() > 0) //不断检查串口是否有数据
{
receive_data(); //接收串口数据
test_do_data(); //测试数据是否正确并更新标志位
}
}
void receive_data(void)
{
int i;
for(i = 0; i < 3; i++)
{
comdata = Serial.read();
//延时一会,让串口缓存准备好下一个字节,不延时可能会导致数据丢失
delay(2);
}
}
void test_do_data(void)
{
if(comdata[0] == 0x55) //0x55和0xAA均为命令帧头,用于判断命令是否有效
{
if(comdata[1] = 0xAA)
{
switch (comdata[2])
{
case tem_command: //温度采集并发送
temp= dht.readTemperature();
Serial.print(temp,2);
break;
case hum_command : //湿度采集并发送
hum = dht.readHumidity();
Serial.print(hum,2);
break;
}
}
}
}
《Arduino与labview开发实践》,沈金鑫,机械工业出版社
做的这个DHT22的例子,没有任何数据输出,这是为什么呢?
真的很急!!!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
求助啊!!!!
一周热门 更多>