我试图每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
}
答案 0 :(得分:2)
哇,这个问题有很多东西可以解决。
我已经多次使用Adafruit的DHT library,并认为您最终只是使用类名而不是实例化变量,所以这就是您要面对的问题的原因。
但是后来我意识到您正在使用以下功能,该功能不是Adafruit库的一部分:
int chk = dht.read12(DHT12PIN);//reads DHT12
因此,我在Internet上进行了一些挖掘,发现有人为具有特定功能的DHT创建了一个库。 (A lot of libraries to be specific)
根据我对该库的分析以及给出的example代码,您遇到了3个问题。
dht.h
应该替换代码中Adafruit's library的头文件DHT_U.h
。您必须实例化DHT
类的名为dht
的变量。可以在设置功能上方按以下步骤进行操作
dht DHT;
鉴于您已经从两个不同的库中混合了代码和头文件,我想您已经在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,但这绝对值得。