DHT 22 выдает данные только после прошивки
- Войдите на сайт для отправки комментариев
Ср, 21/05/2014 - 22:29
Добрый всем день !
Проблема следущая, есть Ардуина Мега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); }
для чего нужны строки 19 и 38?
Примеры из библиотеки DHT работают?
Примеры из библиотеки работают. 19 строка создает необходимую задержку перед опросом датчика, 38 строка выводит состояние датчика.
У меня было бы так:
#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.
Хотя насчет lcd.print(dht.getStatusString()); не уверен.
Всем привет !
Разобрался с проблемой, может и кому- то поможет. Дело оказалось в кривой библиотеке . После установки другой и изменения кода ( у другой библиотеки немного другой синтаксис) все стало в лучшем виде.