DHT11 Чтение слишком высоких значений

Когда я запускаю программу, синтаксических ошибок или чего-то еще нет. Все, что он делает, это дает мне значения температуры в сотнях. Я не знаю, есть ли способ превратить эти абстрактные и неожиданные значения в реальную температуру.

Изначально я ожидал, что он напечатает температуру около 20 градусов Цельсия, но вместо этого он напечатал около 600. Вот мой код:

#include <Adafruit_Sensor.h>
#include "DHT.h"

int sensor_pin = A0; // Аналоговый контактный датчик подключен к
int output_value ;

void setup(){

  Serial.begin(9600);
  delay(5000);//Задержка для загрузки системы
  Serial.println("DHT11 Humidity & temperature Sensor\n\n");
  delay(5000);//Подождите перед доступом к датчику

}//завершаем "setup()"

void loop(){
  //Начало программы

    output_value= analogRead(sensor_pin);

    Serial.println("temperature = ");
    Serial.println(output_value);
    Serial.println("*C");     
    if (output_value < 60) {
    Serial.println("Increase temperature by ");
    Serial.println(output_value);
    Serial.println("*C");
} else {
    Serial.println("Temperature does not need to be increased.");
}

    delay(5000);

}// завершаем цикл()

, 👍-1

Обсуждение

Моя вина, я не включил свой код. Вот:, @Strawberry Milk

Что я должен делать?, @Strawberry Milk

Я это изменил, но что мне теперь делать?, @Strawberry Milk

в любом случае, вернемся к вашей проблеме .......... вы не печатаете температуру ..... вы печатаете значение, которое относится к напряжению на входном контакте ....... напряжение изменяется от 0 В до 3,3 В (или от 0 В до 5 В в зависимости от модели Arduino)..... показание 0 равно 0 В, а максимальное показание равно 3,3 В (5 В) ...... вам следует обратиться к к паспорту датчика, чтобы определить, как показания связаны с температурой, @jsotola

Я даю dht11 3,3 В, но не знаю, как найти данные датчика., @Strawberry Milk

если бы у нас только был доступ к огромному количеству информации..... мы могли бы найти таблицы данных и учебные пособия.... хмммм.... интересно .......... лол.... ..... извини, я не мог с этим поделать, @jsotola

@StrawberryMilk, у тебя есть Arduino Uno? Я не знаю, какой у вас датчик температуры. Можно ссылку на него или фото?, @Jot


1 ответ


Лучший ответ:

3

DHT11 — это цифровое устройство. Вы не можете прочитать его с помощью analogRead().

Хотя температура является аналоговым значением, DHT11 взаимодействует с Arduino не так. Существует специальный цифровой протокол.

Похоже, что вы добавили в свой код заголовки для библиотеки Adafruit Sensor и библиотеки DHT, но на самом деле вы никогда не вызываете представленные в них функции.

В репозитории Adafruit библиотеки датчиков DHT есть пример: https://github.com/adafruit/DHT-sensor-library/ blob/master/examples/DHTtester/DHTtester.ino

Вы можете увидеть, как создать объект из класса DHT и как вызывать его функции-члены, такие как readTemperature() и т. д.

>
,