|
我的程序库文件是DHT.h,所以把原来的dht11.h改成DHT.h,和下面的程序改了一点
原来的程序是这样的
#include <dht11.h>
#define Temperature_COMMAND 0x10 //采集命令字
#define Humidity_COMMAND 0x11 //采集命令字
/*-----( Declare objects )-----*/
dht11 DHT11;
/*-----( Declare Constants, Pin Numbers )-----*/
#define DHT11PIN 2
byte comdata[3]={0}; //定义数组数据,存放串口接收数据
void receive_data(void); //接受串口数据
void test_do_data(void); //测试串口数据是否正确,并更新数据
void setup()
{
Serial.begin(9600);
}
void loop()
{
while (Serial.available() > 0) //不断检测串口是否有数据
{
receive_data(); //接受串口数据
test_do_data(); //测试数据是否正确并更新标志位
}
}
void receive_data(void)
{
int i ;
for(i=0;i<3;i++)
{
comdata[i] =Serial.read();
//延时一会,让串口缓存准备好下一个字节,不延时可能会导致数据丢失,
delay(2);
}
}
void test_do_data(void)
{
if(comdata[0] == 0x55) //0x55和0xAA均为判断是否为有效命令
{
if(comdata[1] == 0xAA)
{
switch (comdata[2])
{
case Temperature_COMMAND:
DHT11.read(DHT11PIN);
Serial.println((float)DHT11.temperature, 2);
break;
case Humidity_COMMAND:
DHT11.read(DHT11PIN);
Serial.println((float)DHT11.humidity, 2);
break;
}
}
}
}
这是我改过之后,但是出现了验证问题
求大神解救
#include <DHT.h>
#define Temperature_COMMAND 0x10 //采集命令字
#define Humidity_COMMAND 0x11 //采集命令字
/*-----( Declare objects )-----*/
DHT DHT11;
/*-----( Declare Constants, Pin Numbers )-----*/
#define DHT11PIN 2
byte comdata[3]={0}; //定义数组数据,存放串口接收数据
void receive_data(void); //接受串口数据
void test_do_data(void); //测试串口数据是否正确,并更新数据
void setup()
{
Serial.begin(9600);
}
void loop()
{
while (Serial.available() > 0) //不断检测串口是否有数据
{
receive_data(); //接受串口数据
test_do_data(); //测试数据是否正确并更新标志位
}
}
void receive_data(void)
{
int i ;
for(i=0;i<3;i++)
{
comdata[i] =Serial.read();
//延时一会,让串口缓存准备好下一个字节,不延时可能会导致数据丢失,
delay(2);
}
}
void test_do_data(void)
{
if(comdata[0] == 0x55) //0x55和0xAA均为判断是否为有效命令
{
if(comdata[1] == 0xAA)
{
switch (comdata[2])
{
case Temperature_COMMAND:
DHT11.read(DHT11PIN);
Serial.println((float)DHT11.temperature, 2);
break;
case Humidity_COMMAND:
DHT11.read(DHT11PIN);
Serial.println((float)DHT11.humidity, 2);
break;
}
}
}
}
|
|