'dht' не называет тип

Я запускаю этот код, и он продолжает выдавать мне эту ошибку. Ниже я помещаю код. Это код Arduino для метеостанции. Я уже добавил и импортировал библиотеки, но продолжаю получать ту же ошибку.

#include <stdlib.h>
#include <SoftwareSerial.h>
#include <DHT.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085_U.h>
#define SSID "DroidSpot" //replace XXXXX by your router SSID
#define PASS "gggg" //replace YYYYY by your router password
#define IP "184.106.153.149" // thingspeak.com IP
#define DHT22_PIN 2
String GET = "GET /update?key=GDQ0LAAXLDGYMXW1&field1="; //replace ZZZZZ by your ThingSpeak channel write key
SoftwareSerial monitor(10, 11); //Serial communication to ESP8266 module (RX, TX)


dht DHT;
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);

.....
    
    //read other sensors
    char buffer[10];
    //light sensor
    float luminance = analogRead(luminancePin);
    //UV sensor
    float uv = analogRead(uvPin);
    uv = uv * 0.0049; //convert values to volts
    uv = uv * 307; //convert to mW/m²
    uv = uv/200; //calculate UV index
    //temperature and humidity
    int chk = DHT.read22(DHT22_PIN);
    float humidity = DHT.humidity;
    float temperature = DHT.temperature;
    //pressure and temperature1
    sensors_event_t event;
    bmp.getEvent(&event);
    float pressure = 0;
    float temperature1 = 0;
    if (event.pressure)
    {
      pressure = event.pressure;
      bmp.getTemperature(&temperature1);
    }


Ошибка в dht DHT; линия. Это:

'dht' does not name a type

person Michele Falcomer    schedule 20.10.2020    source источник


Ответы (1)


Проверьте, какую библиотеку вы используете. Возможно, вы пытаетесь объединить два разных примера исходного кода, используя две разные библиотеки.


Тело вашего кода, кажется, предполагает, что вам нужна другая библиотека. Эта библиотека определяет нужный вам тип: https://github.com/RobTillaart/DHTstable с соответствующим полей, как указал Юрай.

Вам также придется изменить свои заголовки, как здесь. Особенно:

#include <dht.h>

Если вы собираетесь использовать библиотеку Adafruit, как кажется, вы предлагаете:

  • Как говорит ошибка, для dht нет определения класса или типа. Имя класса DHT, а не dht.

    См. DHT.h в репозитории Github и этот пример в то же репо.

Переключите токены:

DHT dht;

и реорганизуйте все остальные DHT в dht. Вам также необходимо убедиться, что вы вызываете правильный метод класса, так как read22 не определен в этой библиотеке.

person Calculuswhiz    schedule 20.10.2020
comment
comment
@Juraj Я не уверен, что проблема здесь в библиотеке. Другие заголовочные файлы, кажется, предполагают, что он использует библиотеку датчиков Adafruit, которая использует DHT.h вместо dht.h. Но я полагаю, что это хороший план Б. - person Calculuswhiz; 20.10.2020
comment
@Juraj Хм ... Понятно. Кажется, ОП может смешивать код из разных источников. Я пересмотрю эту возможность. - person Calculuswhiz; 20.10.2020