【问题标题】:exit status 1 expected primary-expression before '.' token'.' 之前的退出状态 1 预期的主表达式令牌
【发布时间】:2019-04-06 05:54:08
【问题描述】:

我尝试每 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
}

【问题讨论】:

  • 只有湿度有问题吗?
  • 我不知道,但它是唯一突出显示的行
  • 通过注释湿度来检查它,这个 //Serial.print(DHT.humidity,0);
  • 好的,您下载并包含库了吗? Arduino/library 中有 DTH 文件夹吗?
  • 尝试添加dht DHT;包含标题后

标签: c++ c arduino


【解决方案1】:

哇,这个问题有很多东西要解开。

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

但后来我意识到您正在使用以下不属于 Adafruit 库的函数:

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

所以,我在互联网上进行了一些挖掘,并意识到有人为 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。要解决此问题,您必须从Documents/Arduino/libraries 中删除DHT-sensor-library-1.3.4,在其位置创建一个名为DHTStable 的新文件夹,并将here 列出的所有文件放在新文件夹中。

一些经验智慧的话,不要用RobTillaart's library,我看它的文件夹结构就知道你会遇到更多的问题,如果你使用它就可以解决。而是使用Adafruit's library 和他们的example。您还必须安装Adafruit's sensor library,但这绝对值得。

【讨论】:

    猜你喜欢
    • 2012-10-30
    • 2020-10-30
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2017-02-01
    相关资源
    最近更新 更多