极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17619|回复: 7

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

[复制链接]
发表于 2016-4-20 17:22:48 | 显示全部楼层 |阅读模式
我的程序库文件是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;

        }
      }
   }
}
回复

使用道具 举报

发表于 2016-4-20 17:46:42 | 显示全部楼层
请问那里没有编译通过,我这里没有库文件,能否发一份
回复 支持 反对

使用道具 举报

发表于 2016-4-20 17:58:18 | 显示全部楼层
你好,我是用了你的代码进行测试,目前没有发现问题,上下两组代码均编译通过,不知你遇到了什么问题
回复 支持 反对

使用道具 举报

发表于 2016-4-20 17:59:22 | 显示全部楼层
我是从官网上下载的dht11文件,然后手动将里面所有的(包括文件名)都改成了DHT没有发现问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-20 20:19:46 | 显示全部楼层
zjz5717 发表于 2016-4-20 17:59
我是从官网上下载的dht11文件,然后手动将里面所有的(包括文件名)都改成了DHT没有发现问题

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

使用道具 举报

 楼主| 发表于 2016-4-20 21:31:52 | 显示全部楼层
zhushimao 发表于 2016-4-20 20:19
请问可以给我那个官网网址吗,我重新下载一个库文件我看行不行

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'

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



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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2016-4-21 16:43:58 | 显示全部楼层
zhushimao 发表于 2016-4-20 21:31
Arduino:1.6.8 (Windows 7), 开发板:"Arduino/Genuino Uno"

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

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

使用道具 举报

发表于 2016-4-21 16:44:20 | 显示全部楼层
本帖最后由 zjz5717 于 2016-4-21 16:48 编辑

给你两个库你看着用吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-20 19:36 , Processed in 0.045976 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表