Вопрос по блоку DHT
Вопрос по блоку DHT
Доброго дня всем форумчанам.
Подскажите пожалуйста может кто сталкивался с такой проблемой:
Программа FLProg-6.3.1
Arduino IDE 1.8.10
Датчик влажности и температуры DHT22
Плата arduino NANO (китайская)
Нарисовал схему вывода температуры и влажности с данного датчика на LCD экран. (все блоки стандартные из программы)
Скомпилировал, залил скетч в NANO все отлично работает показывает температуру и влажность при подключенном кабеле USB к компьютеру.
Как только подключаешь кабель USB к любому другому источнику (кроме компьютера) и при подаче питания на вход Vin (12 V) и при подаче питания на ногу 5V (соответственно 5 вольт) на экран перестают выводиться показания с датчика,
пишет влажность 1 % и температура 1 °С.
Датчик подключал к разным ногам, поведение одинаковое.
Схему подключения не прилагаю, на другом скетче все работает с любым питанием.
Вот скетч:
#include "DHT_NEW.h"
#include <LiquidCrystal.h>
LiquidCrystal _lcd1(9, 8, 4, 5, 6, 7);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;
DHT _dht1;
unsigned long _dht1LRT = 0UL;
unsigned long _dht1Tti = 0UL;
int _disp2oldLength = 0;
int _disp1oldLength = 0;
void setup()
{
_lcd1.begin(20, 4);
_dht1.setup(10);
_dht1LRT = millis();
_dht1Tti = millis();
}
void loop()
{
if (_isNeedClearDisp1) {_lcd1.clear(); _isNeedClearDisp1= 0;}
//Плата:1
if(_isTimer(_dht1Tti, 1000)) {
if(_isTimer(_dht1LRT,( _dht1.getMinimumSamplingPeriod()))) {
_dht1.readSensor();
_dht1LRT = millis();
_dht1Tti = millis();
}
}
if (!(0)) {
_dispTempLength1 = ((((String("humidity ")) + (( _floatToStringWitRaz(_dht1.humidity,2))) + (String(" %"))))).length();
if (_disp2oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor(0, 1);
_lcd1.print((((String("humidity ")) + (( _floatToStringWitRaz(_dht1.humidity,2))) + (String(" %")))));
} else {
if (_disp2oldLength > 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}
if (!(0)) {
_dispTempLength1 = ((((String("temperatura ")) + (( _floatToStringWitRaz(_dht1.temperature,2))) + (String(" C"))))).length();
if (_disp1oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(0, 0);
_lcd1.print((((String("temperatura ")) + (( _floatToStringWitRaz(_dht1.temperature,2))) + (String(" C")))));
} else {
if (_disp1oldLength > 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
}
String _floatToStringWitRaz(float value, int raz)
{
return String(value,raz);
}
bool _isTimer(unsigned long startTime, unsigned long period )
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
}
Отправлено спустя 6 минут 2 секунды:
На надпись над блоком LCD не обращайте внимания в настройках строки разные.
Подскажите пожалуйста может кто сталкивался с такой проблемой:
Программа FLProg-6.3.1
Arduino IDE 1.8.10
Датчик влажности и температуры DHT22
Плата arduino NANO (китайская)
Нарисовал схему вывода температуры и влажности с данного датчика на LCD экран. (все блоки стандартные из программы)
Скомпилировал, залил скетч в NANO все отлично работает показывает температуру и влажность при подключенном кабеле USB к компьютеру.
Как только подключаешь кабель USB к любому другому источнику (кроме компьютера) и при подаче питания на вход Vin (12 V) и при подаче питания на ногу 5V (соответственно 5 вольт) на экран перестают выводиться показания с датчика,
пишет влажность 1 % и температура 1 °С.
Датчик подключал к разным ногам, поведение одинаковое.
Схему подключения не прилагаю, на другом скетче все работает с любым питанием.
Вот скетч:
#include "DHT_NEW.h"
#include <LiquidCrystal.h>
LiquidCrystal _lcd1(9, 8, 4, 5, 6, 7);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;
DHT _dht1;
unsigned long _dht1LRT = 0UL;
unsigned long _dht1Tti = 0UL;
int _disp2oldLength = 0;
int _disp1oldLength = 0;
void setup()
{
_lcd1.begin(20, 4);
_dht1.setup(10);
_dht1LRT = millis();
_dht1Tti = millis();
}
void loop()
{
if (_isNeedClearDisp1) {_lcd1.clear(); _isNeedClearDisp1= 0;}
//Плата:1
if(_isTimer(_dht1Tti, 1000)) {
if(_isTimer(_dht1LRT,( _dht1.getMinimumSamplingPeriod()))) {
_dht1.readSensor();
_dht1LRT = millis();
_dht1Tti = millis();
}
}
if (!(0)) {
_dispTempLength1 = ((((String("humidity ")) + (( _floatToStringWitRaz(_dht1.humidity,2))) + (String(" %"))))).length();
if (_disp2oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor(0, 1);
_lcd1.print((((String("humidity ")) + (( _floatToStringWitRaz(_dht1.humidity,2))) + (String(" %")))));
} else {
if (_disp2oldLength > 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}
if (!(0)) {
_dispTempLength1 = ((((String("temperatura ")) + (( _floatToStringWitRaz(_dht1.temperature,2))) + (String(" C"))))).length();
if (_disp1oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(0, 0);
_lcd1.print((((String("temperatura ")) + (( _floatToStringWitRaz(_dht1.temperature,2))) + (String(" C")))));
} else {
if (_disp1oldLength > 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
}
String _floatToStringWitRaz(float value, int raz)
{
return String(value,raz);
}
bool _isTimer(unsigned long startTime, unsigned long period )
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
}
Отправлено спустя 6 минут 2 секунды:
На надпись над блоком LCD не обращайте внимания в настройках строки разные.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 4007
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
Вопрос по блоку DHT
Nano подключаете через спец.плату под Nano?
Проверьте питание на DHT когда он не работает.
Проверьте питание на DHT когда он не работает.
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
Вопрос по блоку DHT
У меня была подобная проблема, правда на Меге, но не думаю, что это особенности процессоров. Я обратил внимание, что датчик или очень неустойчиво, или вовсе не работает на линиях, поддерживающих ШИМ. Я не знаю, в чем проблема - ide или flprog, поэтому просто имею это в виду. А датчики пробовал разные, из разных партий, и с обвязкой на плате, и без нее. Помнится, ретроградный Меркурий тогда был, кто знает, кто знает...
Вопрос по блоку DHT
Питание есть , я же написал, все работает с другим скетчем.ecoins писал(а): 17 апр 2020, 22:18 Nano подключаете через спец.плату под Nano?
Проверьте питание на DHT когда он не работает.
В рабочем варианте библиотека #include "DHT.h"
Отправлено спустя 2 минуты 46 секунд:
Датчик пробовал на разные выхода цеплять - результат один, ардуино платы тоже пробовал разные - результат один.Alias писал(а): 17 апр 2020, 23:51 У меня была подобная проблема, правда на Меге, но не думаю, что это особенности процессоров. Я обратил внимание, что датчик или очень неустойчиво, или вовсе не работает на линиях, поддерживающих ШИМ. Я не знаю, в чем проблема - ide или flprog, поэтому просто имею это в виду. А датчики пробовал разные, из разных партий, и с обвязкой на плате, и без нее. Помнится, ретроградный Меркурий тогда был, кто знает, кто знает...
Проблема скорее всего в библиотеке "DHT_NEW.h"
- nalnik
- Подполковник
- Сообщения: 1320
- Зарегистрирован: 14 май 2016, 17:12
- Откуда: Кисловодск
- Имя: Александр
Вопрос по блоку DHT
Скажите а как вы подключили DHT22 ?
Попробуйте Третью ногу датчика посадить на минус.
Я хочу быть добрее, но люди сами нарываются.
Вопрос по блоку DHT
Дело в том что с другим скетчем то все работает. Со штатным блоком тоже работает только если питаешь
arduino от USB компьютера, если питать также через USB но не от компьютера или любым другим способом не работает.
Отправлено спустя 15 минут 13 секунд:
Заработало, когда подключил экран через I2C
- nalnik
- Подполковник
- Сообщения: 1320
- Зарегистрирован: 14 май 2016, 17:12
- Откуда: Кисловодск
- Имя: Александр
Вопрос по блоку DHT
Какое I2C ?
Датчики у меня работают с тремя проводами. Третий из четырех на минус - если нет то творит чудеса.
Я хочу быть добрее, но люди сами нарываются.
-
- Сержант
- Сообщения: 170
- Зарегистрирован: 02 янв 2020, 11:55
- Имя: Александр
- Благодарил (а): 10 раз
- Поблагодарили: 4 раза
Вопрос по блоку DHT
Ну, не знаю...
Резистор подтягивающий на 4,7...10кОм цепляли к сигнальной ноге датчика?
Резистор подтягивающий на 4,7...10кОм цепляли к сигнальной ноге датчика?
Вопрос по блоку DHT
АгаDragony писал(а): 30 апр 2020, 18:29 Ну, не знаю...
Резистор подтягивающий на 4,7...10кОм цепляли к сигнальной ноге датчика?
Отправлено спустя 3 минуты 3 секунды:
До этого экран был подключен по 4 проводной схеме, потом взял другой экран и подключил через i2c
Датчик и в том и в другом случае работал на 3 ногах
-
- Сержант
- Сообщения: 170
- Зарегистрирован: 02 янв 2020, 11:55
- Имя: Александр
- Благодарил (а): 10 раз
- Поблагодарили: 4 раза
Вопрос по блоку DHT
"В радиотехнике нет чудес - есть только плохие контакты!"(с)nalnik писал(а): 30 апр 2020, 18:06 Датчики у меня работают с тремя проводами. Третий из четырех на минус - если нет то творит чудеса.

Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость