DHT11 возвращает неверные значения

Я пытаюсь использовать датчик DHT11 с Arduino. Но, к сожалению, он возвращает следующие значения:

Температура = 1,00 Влажность = 2,00

Мой код выглядит следующим образом:

#include <dht.h>
dht DHT;
#define DHT11_PIN 7

void setup(){
   Serial.begin(9600);
}

void loop()
{
    int chk = DHT.read11(DHT11_PIN);
    Serial.print("Temperature = ");
    Serial.println(DHT.temperature);
    Serial.print("Humidity = ");
    Serial.println(DHT.humidity);
    delay(1000);
}

Ссылка на библиотеку, которую я использую, находится здесь

Я подключил +ve к 3,3 В Я подключил -ve к земле Я подключился к цифровому контакту № 7

, 👍0

Обсуждение

Текущая температура в комнате в противном случае составляет 34 градуса Цельсия и влажность 62%., @Saad Bashir


2 ответа


3

Вы должны вызвать функции:

#include <DHT.h>
#define DHT11_PIN 7
DHT dht(DHT11_PIN, DHT11);

void setup() {
    Serial.begin(9600);
    dht.begin();
}

void loop() {

    float humidity = dht.readHumidity();
    float temperature = dht.readTemperature();

   if (isnan(humidity) || isnan(temperature)) {
      Serial.println("Failed to read from DHT sensor!");
      return;
    }

    Serial.print("Temperature = ");
    Serial.println(temperature);
    Serial.print("Humidity = ");
    Serial.println(humidity);

    delay(1000);
}

Дополнение

,

Похоже, вы используете другую библиотеку. Можете ли вы сказать мне, какую библиотеку вы используете для этого кода?, @Saad Bashir

Серийный.начать(9600); отсутствовал, поэтому я добавил это в ваш код, и я все еще получаю тот же результат, что и раньше. Температура 1 и влажность 2, @Saad Bashir

Ахмм, я не очень хорошо разбираюсь в схемах. Так что не уверен, должен ли я ставить по одному в обоих местах или просто использовать один резистор. А во-вторых, у меня на данный момент есть только резисторы 10k :O, они будут работать?, @Saad Bashir

Я добавил фотографии в исходный вопрос, показывающие, как я использовал резистор. По-прежнему получаю ту же температуру и влажность, @Saad Bashir


2

Это не DHT11, DHT11 — синий, DHT21 — черный, а DHT 22 — белый. Это должен быть DHT22, поэтому значения неправильные.

EDIT: на ваших фотографиях белый корпус говорит AM2302, это определенно DHT22, код должен быть соответствующим образом адаптирован.

,

У меня была обратная проблема: я использовал DHT11 (синий) вместо dht22 (белый). Значение, которое я получил, было в 500°C для температуры и 1500% для влажности. Замена DHT11 на DHT22 решает эту проблему., @MagTun