ожидайте выхода из состояния 1, ожидая первичное выражение перед '.'знак - PullRequest
0 голосов
/ 06 апреля 2019

Я пытаюсь получать температуру и влажность каждые 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
}

1 Ответ

2 голосов
/ 06 апреля 2019

Ух ты, в этом вопросе было много чего распаковать.

Я много раз использовал DHT-библиотеку от Adafruit и думал, что ты просто использовал вместо этого имя классасоздания экземпляра переменной, и именно поэтому вы столкнулись с проблемой.

Но потом я понял, что вы используете следующую функцию, которая не является частью библиотеки Adafruit:

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

Итак, я немного покопался в интернете и понял, чтокто-то создал библиотеку для DHT с этой конкретной функцией. (много библиотек, чтобы быть конкретными)

Основываясь на моем анализе этой библиотеки и приведенном примере кода, у вас есть 3 проблемы.

  1. Вы указали неверный заголовочный файл.Заголовочный файл dht.h из библиотеки RobTillaart должен заменить заголовочный файл DHT_U.h из библиотеки Adafruit в вашем коде.
  2. Вы должны создать экземплярпеременная с именем DHT класса dht.Это можно сделать следующим образом, над вашей функцией настройки

    dht DHT;

  3. Учитывая, что у вас есть код и файлы заголовков, смешанные из ДВУХ РАЗНЫХ БИБЛИОТЕК, яЯ предполагаю, что вы установили библиотеку Adafruit вместо библиотеки RobTillaart .Чтобы это исправить, вам нужно будет удалить DHT-sensor-library-1.3.4 из Documents/Arduino/libraries, создать новую папку с именем DHTStable и поместить все файлы из списка здесь в новую папку.

Несколько слов мудрости, основанной на опыте, не используйте Библиотека RobTillaart , я могу судить по структуре папок, что вы столкнетесь с большим количеством проблем, чемВы можете решить, если вы используете его.Вместо этого используйте библиотеку Адафрута с их примером .Вам также нужно будет установить библиотеку датчиков Adafruit , но это определенно стоит того.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...