我试图每60秒测一次温度和湿度,但我的代码不起作用。每当我编译它时,都会出现以下错误“在“.”“token”之前需要主表达式
这一行被突出显示。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
}
最佳答案
哇,在这个问题上有很多东西要解开。
我已经使用了Adafruit的DHT library很多次,并且认为您只是使用类名而不是实例化变量,这就是您面临这个问题的原因。
但后来我意识到您使用的是以下功能,它不是Adafruit库的一部分:
int chk = dht.read12(DHT12PIN);//reads DHT12
所以,我在网上做了一些调查,发现有人为DHT做了一个具有特定功能的图书馆。(A lot of libraries to be specific)
根据我对这个库的分析,以及给出的example代码,您有3个问题。
您包含了错误的头文件。RobTillaart's library中的头文件
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,但绝对值得。
关于c++ - 退出状态1,预期在'。'之前的主表达式。代币,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55546294/