我试图每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/

10-10 23:12