Ключевое ?лово

vk

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Софт:обсуждение программного обеспечения для умного дома

ТЕМА: Софт к датчику влажности воздуха DHT11 и 22

Re: Нужен софт для датчиков DHT11и DHT22 10 Дек 2014 20:59 #301

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7197
  • Спасибо получено: 1114
  • Репутация: 194
Я пока не нашел ошибку, переменные там и так безнаковые, просто криво выводит оно ))
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.

Re: Нужен софт для датчиков DHT11и DHT22 11 Дек 2014 09:07 #306

  • sinoptik
  • sinoptik аватар
  • Не в сети
  • Захожу иногда
  • Сообщений: 51
  • Спасибо получено: 1
  • Репутация: 3
Adminhs, мне кажется, что можно объявить под каждый из пяти байт свою переменную: a, b, c, d, e.
Дальше сделать так: если b<0, тогда a=a+1. Аналогично для температуры: если d<0, то c=c+1.
Далее влажность = (a*256 +b)/10, и для температуры: температура =(c*256 +d)/10.
Администратор запретил публиковать записи гостям.

Re: Нужен софт для датчиков DHT11и DHT22 11 Дек 2014 10:11 #307

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7197
  • Спасибо получено: 1114
  • Репутация: 194
Алгоритм который используется для обработки сырых данных из этих 5 байт стандартный и используется на куче м/к. Тут лишь разница в том, что это делается на компьютере..

Про "если b<0, тогда a=a+1" вообще не понял к чему это ))
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.

Re: Нужен софт для датчиков DHT11и DHT22 11 Дек 2014 10:50 #308

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7197
  • Спасибо получено: 1114
  • Репутация: 194
Подправил тип переменных, обновил утилиту -можно проверять что изменится..
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.

Re: Нужен софт для датчиков DHT11и DHT22 11 Дек 2014 11:40 #309

  • sinoptik
  • sinoptik аватар
  • Не в сети
  • Захожу иногда
  • Сообщений: 51
  • Спасибо получено: 1
  • Репутация: 3
Adminhs, объясню на примере:
Вот у меня сейчас показывает так:
5 байт: 1 87 1 10 99
DHT22:26.6 *C 34.3 %

Рассматриваем по моей формуле: если b<0, то a=a+1, соответственно, если b>=0, то ничего не прибавляем, а оставляем a=a.
Считаем: у нас в нашем примере выше a=1, b=87, c=1, d=10, e=99.
По условию моей формулы, если b<0, то a=a+1.
У нас b=87, значит больше нуля, поэтому a остаётся без прибавления единицы.
Расшифровываем влажность: (a*256 +b)/10=(1*256 +87)/10 =343/10=34.3%

Байты температуры у нас такие: c=1, d=10.
Расшифровываем температуру: (c*256 +d)/10 =(1*256 +10)/10 =266/10=26.6 градусов.
Придумаем такой пример, когда будет выполняться второе условие моей формулы: 5 байт: 1 -112 0 -5 -116
у нас в этом примере переменные b и d отрицательные. Вот и смотрим на выполнение условия если b<0, то a=a+1 и если d<0, то c=c+1.
Считаем: b у нас =-112, значит a=a+1=1+1=2 (может её записать во временную переменную a').
считаем влажность: (a (или a') *256 +b)/10 =(2*256 -112) /10 =400/10 =40.0%
У вас в этом случае к a не прибавляется 1, поэтому берётся один раз по 256, а не 2 раза по 256 и получается, что ваш алгоритм делает так: (1*256 -112)/10=144/10=14.4% вместо реальных 40,0% влажности

Аналогично считаем температуру:
в нашем примере c=0, d=-5, значит по условию формулы нужно к c прибавить единицу (временно прибавть, нельзя потом её принимать во внимание при подсчёте контрольной суммы). получаем: (c' *256 +d)/10=(1 *256 -5)/10=251/10=25.1 градусов. В Вашем же случае не прибавляется временно к c единица, поэтому у вас получается так: (0 *256 -5)/10=-5/10=-0,5 градусов.

Вывод: в вашей программе в таких случаях, когда второй и четвёртый байты отрицательные, происходит занижение влажности на 25,6% и занижение температуры на 25,6 градусов.
Администратор запретил публиковать записи гостям.
Спасибо сказали: Adminhs

Re: Нужен софт для датчиков DHT11и DHT22 11 Дек 2014 11:53 #310

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7197
  • Спасибо получено: 1114
  • Репутация: 194
Да, я уже учел это и выше упомянул о обновлении прошивки.

Там тип переменной буфера просто задан знаковый, а надо было без знаковый.. похоже в этом и косяк.. Буфер этот задается ещё частью программы, которая отвечает за работу с USB - по этому и не учел это.
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.
Модераторы: FlyRouter, Dolfik
Время создания страницы: 0.152 секунд

Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.