退出状态1,预期在'。'之前的主表达式。代币

时间:2019-04-06 05:54:09

标签: c++ c arduino

我试图每60秒获取一次温度和湿度,但是我的代码无法正常工作。每当我编译它时,都会出现此错误“预期的主表达式在'之前。”。令牌”

此行突出显示。

Serial.print(DHT.humidity,0);//prints humidity in serial

这是我的完整代码:

#include <DHT_U.h>
#define DHT12PIN 7// sets pin 7 for DHT11 signal connection

void setup(){
   Serial.begin(9600);//opens serial  
}

void loop()
{
  int chk = DHT.read12(DHT12PIN);//reads DHT12

  Serial.print(DHT.temperature,0);//prints temp in serial
  Serial.print(",");//pints comma in serial
  Serial.print(DHT.humidity,0);//prints humidity in serial  
  Serial.println(); //carraiage return  
  delay(2000);//wait 2 seconsds
}

1 个答案:

答案 0 :(得分:2)

哇,这个问题有很多东西可以解决。

我已经多次使用Adafruit的DHT library,并认为您最终只是使用类名而不是实例化变量,所以这就是您要面对的问题的原因。

但是后来我意识到您正在使用以下功能,该功能不是Adafruit库的一部分:

int chk = dht.read12(DHT12PIN);//reads DHT12

因此,我在Internet上进行了一些挖掘,发现有人为具有特定功能的DHT创建了一个库。 (A lot of libraries to be specific)

根据我对该库的分析以及给出的example代码,您遇到了3个问题。

  1. 您包含了错误的头文件。来自RobTillaart's library的头文件dht.h应该替换代码中Adafruit's library的头文件DHT_U.h
  2. 您必须实例化DHT类的名为dht的变量。可以在设置功能上方按以下步骤进行操作

    dht DHT;

  3. 鉴于您已经从两个不同的库中混合了代码和头文件,我想您已经在Adafruit library的位置安装了RobTillaart's library。要解决此问题,您将必须从DHT-sensor-library-1.3.4中删除Documents/Arduino/libraries,在其中创建一个名为DHTStable的新文件夹,并将所有列出的here文件放置在新文件夹。

有些基于经验的智慧之词,不要使用RobTillaart's library,从它的文件夹结构一目了然,我可以看出您将面临更多的问题,如果您使用它,则可以解决。而是使用Adafruit's library及其example。您还必须安装Adafruit's sensor library,但这绝对值得。