zhushimao 发表于 2016-4-20 17:22:48

DHT11的温湿度采集程序为什么验证错误

我的程序库文件是DHT.h,所以把原来的dht11.h改成DHT.h,和下面的程序改了一点
原来的程序是这样的
#include <dht11.h>

#define Temperature_COMMAND0x10   //采集命令字
#define Humidity_COMMAND   0x11   //采集命令字

/*-----( Declare objects )-----*/
dht11 DHT11;

/*-----( Declare Constants, Pin Numbers )-----*/
#define DHT11PIN 2

byte comdata={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 =Serial.read();
      //延时一会,让串口缓存准备好下一个字节,不延时可能会导致数据丢失,
       delay(2);
   }
}

void test_do_data(void)
{
if(comdata == 0x55)            //0x55和0xAA均为判断是否为有效命令
   {
   if(comdata == 0xAA)
   {
      switch (comdata)
      {
            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_COMMAND0x10   //采集命令字
#define Humidity_COMMAND   0x11   //采集命令字

/*-----( Declare objects )-----*/
DHT DHT11;

/*-----( Declare Constants, Pin Numbers )-----*/
#define DHT11PIN 2

byte comdata={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 =Serial.read();
      //延时一会,让串口缓存准备好下一个字节,不延时可能会导致数据丢失,
       delay(2);
   }
}

void test_do_data(void)
{
if(comdata == 0x55)            //0x55和0xAA均为判断是否为有效命令
   {
   if(comdata == 0xAA)
   {
      switch (comdata)
      {
            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;

      }
      }
   }
}

zjz5717 发表于 2016-4-20 17:46:42

请问那里没有编译通过,我这里没有库文件,能否发一份

zjz5717 发表于 2016-4-20 17:58:18

你好,我是用了你的代码进行测试,目前没有发现问题,上下两组代码均编译通过,不知你遇到了什么问题

zjz5717 发表于 2016-4-20 17:59:22

我是从官网上下载的dht11文件,然后手动将里面所有的(包括文件名)都改成了DHT没有发现问题

zhushimao 发表于 2016-4-20 20:19:46

zjz5717 发表于 2016-4-20 17:59 static/image/common/back.gif
我是从官网上下载的dht11文件,然后手动将里面所有的(包括文件名)都改成了DHT没有发现问题

请问可以给我那个官网网址吗,我重新下载一个库文件我看行不行

zhushimao 发表于 2016-4-20 21:31:52

zhushimao 发表于 2016-4-20 20:19 static/image/common/back.gif
请问可以给我那个官网网址吗,我重新下载一个库文件我看行不行

Arduino:1.6.8 (Windows 7), 开发板:"Arduino/Genuino Uno"

C:\Users\Zhenyu\Desktop\5.4娓╂箍搴﹂噰闆哱Arduino\Arduino.ino: In function 'void test_do_data()':

Arduino:49: error: 'class DHT' has no member named 'read'

In file included from C:\Users\Zhenyu\Desktop\5.4娓╂箍搴﹂噰闆哱Arduino\Arduino.ino:1:0:

C:\Program Files\Arduino\libraries\arduino-DHT-master/DHT.h:85:9: error: 'float DHT::temperature' is protected

   float temperature;

         ^

Arduino:50: error: within this context

Arduino:53: error: 'class DHT' has no member named 'read'

In file included from C:\Users\Zhenyu\Desktop\5.4娓╂箍搴﹂噰闆哱Arduino\Arduino.ino:1:0:

C:\Program Files\Arduino\libraries\arduino-DHT-master/DHT.h:86:9: error: 'float DHT::humidity' is protected

   float humidity;

         ^

Arduino:54: error: within this context

exit status 1
'class DHT' has no member named 'read'

在文件 -> 首选项开启
“编译过程中显示详细输出”选项
这份报告会包含更多信息。



不知道怎么回事,总是编译错误

zjz5717 发表于 2016-4-21 16:43:58

zhushimao 发表于 2016-4-20 21:31 static/image/common/back.gif
Arduino:1.6.8 (Windows 7), 开发板:"Arduino/Genuino Uno"

C:\Users\Zhenyu\Desktop\5.4娓╂箍搴﹂噰 ...

根据你提供的错误信息呢,初步判断是因为你的库文件编译不通过造成的,建议你考虑换一个库文件

zjz5717 发表于 2016-4-21 16:44:20

本帖最后由 zjz5717 于 2016-4-21 16:48 编辑

给你两个库你看着用吧
页: [1]
查看完整版本: DHT11的温湿度采集程序为什么验证错误