Проблема с настройкой DHT22
Проблема с настройкой DHT22
Добрый день!
Гуру, помогите разобраться с DHT22. Есть задача - вывод на экран №1 показаний времени; на экран №2 - температуры и влажности. На часах настроено мигающее двоеточие секунд с частотой мигания 1 раз в секунду.
Проблема - если в настройках DHT22 установить опрос датчика каждую секунду, то мигающее двоеточие секунд мигает в два раза реже, т.е. раз в 2 секунды; а также переключение между экранами дисплея становится некомфортным - если кнопка переключения экранов Кн1 нажимается в момент опроса датчика, ардуинка на нажатие кнопки не реагирует.
Второй момент не проблема - его видимо, легко решить, добавив таймер TOF на Кн1, а вот с неправильным миганием двоеточия справится не могу.
В принципе, частый опрос DHT22 не требуется, достаточно было бы и раз в 30-60 секунд. Но тогда требуется получить актуальные данные с него по событию - например, по нажатию кнопки Кн2. Пробую, подключаю Кн2 к входу разрешения опроса DHT22. В настройках DHT22 оставляю опрос раз в секунду, и как я понимаю, пока Кн2 не нажата, опроса быть не должно. И здесь для меня сюрприз - не смотря на ненажатую кнопку Кн2, двоеточие мигает также с частотой раз в 2 секунды, что указывает на то, что датчик все равно опрашивается (и "подвешивает" ардуинку). Если я в DHT22 настраиваю опрос раз в 30 секунд, ситуация такая - двоеточие секунд работает с нужной частотой 1Hz, но нажатие Кн2 не приводит к актуализации показаний с DHT22. Как можно решить эту проблему?
Гуру, помогите разобраться с DHT22. Есть задача - вывод на экран №1 показаний времени; на экран №2 - температуры и влажности. На часах настроено мигающее двоеточие секунд с частотой мигания 1 раз в секунду.
Проблема - если в настройках DHT22 установить опрос датчика каждую секунду, то мигающее двоеточие секунд мигает в два раза реже, т.е. раз в 2 секунды; а также переключение между экранами дисплея становится некомфортным - если кнопка переключения экранов Кн1 нажимается в момент опроса датчика, ардуинка на нажатие кнопки не реагирует.
Второй момент не проблема - его видимо, легко решить, добавив таймер TOF на Кн1, а вот с неправильным миганием двоеточия справится не могу.
В принципе, частый опрос DHT22 не требуется, достаточно было бы и раз в 30-60 секунд. Но тогда требуется получить актуальные данные с него по событию - например, по нажатию кнопки Кн2. Пробую, подключаю Кн2 к входу разрешения опроса DHT22. В настройках DHT22 оставляю опрос раз в секунду, и как я понимаю, пока Кн2 не нажата, опроса быть не должно. И здесь для меня сюрприз - не смотря на ненажатую кнопку Кн2, двоеточие мигает также с частотой раз в 2 секунды, что указывает на то, что датчик все равно опрашивается (и "подвешивает" ардуинку). Если я в DHT22 настраиваю опрос раз в 30 секунд, ситуация такая - двоеточие секунд работает с нужной частотой 1Hz, но нажатие Кн2 не приводит к актуализации показаний с DHT22. Как можно решить эту проблему?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Allex901 27 янв 2016, 10:24, всего редактировалось 1 раз.
Проблема с настройкой DHT22
Вы физически используете один дисплей, а зачем в схеме стоит два?
С кнопкой у вас происходит следующее. В Настройках входа у вас включен подтягивающий резистор, то-есть пока кнопка не нажата у вас на входе датчика висит высокий уровень, при нажатии появляется низкий. Инвертируйте выход кнопки.
С кнопкой у вас происходит следующее. В Настройках входа у вас включен подтягивающий резистор, то-есть пока кнопка не нажата у вас на входе датчика висит высокий уровень, при нажатии появляется низкий. Инвертируйте выход кнопки.
Последний раз редактировалось Олег 27 янв 2016, 10:48, всего редактировалось 1 раз.
Проблема с настройкой DHT22
Второй дисплей в схеме установлен ошибочно, а с кнопкой это я сморозил;) Спасибо, теперь все работает так, как нужно.
Правильно ли я понимаю, что если мне требуется настроить, чтобы данные с DHT22 на дисплее актуализировались раз в 60 секунд или при нажатии кнопки Кн2, то существует один вариант: в настройках DHT22 настраиваем обновление раз в секунду, а внешними генератором подавать положительный импульс продолжительностью 1000 мс на вход En DHT22 раз в 60 секунд, а также на этот же вход завести Кн2, скажем, с таймером TOF на 1000 мс?
PS Тайминг в секунду указал для примера
Правильно ли я понимаю, что если мне требуется настроить, чтобы данные с DHT22 на дисплее актуализировались раз в 60 секунд или при нажатии кнопки Кн2, то существует один вариант: в настройках DHT22 настраиваем обновление раз в секунду, а внешними генератором подавать положительный импульс продолжительностью 1000 мс на вход En DHT22 раз в 60 секунд, а также на этот же вход завести Кн2, скажем, с таймером TOF на 1000 мс?
PS Тайминг в секунду указал для примера
Последний раз редактировалось Allex901 27 янв 2016, 12:18, всего редактировалось 1 раз.
-
- Лейтенант
- Сообщения: 361
- Зарегистрирован: 07 сен 2015, 23:53
Проблема с настройкой DHT22
А откуда у вас такая уверенность, что ошибка будет линейна во всём диапазоне?НовыйUser писал(а):далее на схемах просто блоком суммирования чисел подтягивается недостающий проценты к датчикам чтобы все показывали единый результат.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Проблема с настройкой DHT22
Не стану создавать новую тему.
Вопрос Сергею (разработчику):
Вставляю стандартный блок DHT22 на третью плату.
В начале секции loop() перед кодом первой платы вставляется код
а вот код на третьей плате выглядит так:
Смысл ставить эти датчики на отдельную плату с условием пропадает, т.к. основная часть кода, которая пожирает время, остается в основном цикле и работа блока корректируется только в его настройках. А можно сделать так: "где блок, там и код"? Я конечно поставил бит разрешения работы платы и этот же бит завел на блок, но как-то не красиво все это.
Вопрос Сергею (разработчику):
Вставляю стандартный блок DHT22 на третью плату.
В начале секции loop() перед кодом первой платы вставляется код
Код: Выделить всё
float tempDht2;
tempDht2 = _dht1.readTemperature();
if (!(isnan(tempDht2))){_dht1t=tempDht2; }
tempDht2 = _dht1.readHumidity();
if (!(isnan(tempDht2))){_dht1h=tempDht2; }
Код: Выделить всё
in_162745127_1 = (int(_dht1t));
....
in_162745127_2 = (int(_dht1h));
...
Последний раз редактировалось Boroda 08 фев 2017, 19:23, всего редактировалось 1 раз.
- support
- Супермодератор
- Сообщения: 1917
- Зарегистрирован: 03 янв 2018, 11:45
- Откуда: Астрахань
- Имя: Сергей
- Поблагодарили: 23 раза
- Контактная информация:
Проблема с настройкой DHT22
Подождите выхода следующей версии. Там этот вопрос решон. Во первых опрос датчика будет происходить на той плате где он установлен, во вторых применена новая библиотека и опрос происходит намного быстрее. Существующий код писался в стародавние времена, когда о работе плат по условию даже и не планировалась.
Автор программы FLProg.
Проблема с настройкой DHT22
Добрый день!
Как можно организовать проверку исправности DHT22 аналогично: "if (isnan(h) || isnan(t) ) "?
Как можно организовать проверку исправности DHT22 аналогично: "if (isnan(h) || isnan(t) ) "?
Последний раз редактировалось dim770 28 апр 2017, 11:43, всего редактировалось 1 раз.
Проблема с настройкой DHT22
dim770, какую проверку исправности? Если датчик не отвечает на экран выводится слово "NAN".
Проблема с настройкой DHT22
fozik, какой датчик ( на плате или нет), кабель,как подключили.
Экстрасенсы устали.
Экстрасенсы устали.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя