DHT 22 выдает данные только после прошивки

chernovik
Offline
Зарегистрирован: 21.05.2014

Добрый всем день !

Проблема следущая, есть Ардуина Мега2560 и подключенный к ней DHT22. Также подключен 2-хстрочный LCD. Так вот, данные с DHT выводятся на дисплей только сразу после залития скетча и до отключения питания. Подключаю питание снова и все данные с DHT становятся равными 1. При этом если в IDE открыть монитор порта, то данные появятся, хотя всё , что касается вывода в порт, я отключил. Не пойму в чем дело. Гугление на протяжении 3 дней результата не дало..

#include "DHT.h"
#include <LiquidCrystal.h>
DHT dht;
LiquidCrystal lcd(12, 11, 6, 5, 4, 3);

void setup()
{
  //Serial.begin(9600);
  //Serial.println();
  //Serial.println("Status\tHumidity (%)\tTemperature (C)\t(F)");

  dht.setup(7); // data pin 2
  
  lcd.begin(16, 2);
}

void loop()
{
  delay(dht.getMinimumSamplingPeriod());

  float humidity = dht.getHumidity();
  float temperature = dht.getTemperature();

  //Serial.print(dht.getStatusString());
  //Serial.print("\t");
  //Serial.print(humidity, 1);
  //Serial.print("\t\t");
  //Serial.print(temperature, 1);
  //Serial.print("\t\t");
  //Serial.println(dht.toFahrenheit(temperature), 1);
  
  
  
  delay(4000);
  
  
  lcd.setCursor(0, 0);
  lcd.print(dht.getStatusString());
  lcd.setCursor(2, 0);
  lcd.print(humidity, 0);
  lcd.setCursor(3, 1);
  lcd.print(temperature);
      
  
  
}

 

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

для чего нужны строки 19 и 38?

Примеры из библиотеки DHT работают?

chernovik
Offline
Зарегистрирован: 21.05.2014

Примеры из библиотеки работают. 19 строка создает необходимую задержку перед опросом датчика, 38 строка выводит состояние датчика.

doitt
Offline
Зарегистрирован: 26.05.2014

У меня было бы так:

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

#define DHTPIN A1                                 //Тут поставь нужный пин. Сейчас стоит А1
#define DHTTYPE DHT22 // DHT 22
DHT dht(DHTPIN, DHTTYPE);

LiquidCrystal lcd(12, 11, 6, 5, 4, 3);

void setup()
{

dht.begin();

lcd.begin(16, 2);
delay(1000);

}

void loop()
{

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

delay(4000);
lcd.setCursor(0, 0);
lcd.print(dht.getStatusString());
lcd.setCursor(2, 0);
lcd.print(humidity, 0);
lcd.setCursor(3, 1);
lcd.print(temperature);
}

 

Если надо могу скинуть библиотеку с примером на e-mail.

doitt
Offline
Зарегистрирован: 26.05.2014

Хотя насчет lcd.print(dht.getStatusString()); не уверен.

chernovik
Offline
Зарегистрирован: 21.05.2014

Всем привет ! 

Разобрался с проблемой, может и кому- то поможет. Дело оказалось в кривой библиотеке . После установки другой и изменения кода ( у другой библиотеки немного другой синтаксис) все стало в лучшем виде.