Разбор и процентное соотношение с аналогового датчика влажности

Описание кода без конкретной привязки

Модераторы: immortal, newz20

Ответить
Аватара пользователя
dioxin
Сообщения: 159
Зарегистрирован: Вт фев 14, 2017 4:43 pm
Откуда: Иваново
Благодарил (а): 15 раз
Поблагодарили: 40 раз

Разбор и процентное соотношение с аналогового датчика влажности

Сообщение dioxin » Ср мар 06, 2019 3:11 pm

Есть аналоговый емкостный датчик датчик влажности почвы:
СпойлерПоказать
SENS-SOIL-CAP-1024x768_0.jpg
SENS-SOIL-CAP-1024x768_0.jpg (69.32 КБ) 177 просмотров
Получая с него данные, заметил что идут они с понижением - тоесть чем выше влажность, тем меньше значение.
Опустил датчик в стакан с водой, получил значение - 441, просушил - 824.
Нужно привести эти значения к процентному соотношению. На с++ есть простое решение, команда MAP, а вот на php такого не нашел. Очень помогла ссылка тов. Alexandr в телеграм-канале.
Вот что получилось:

Код: Выделить всё

$hum=gg('vlajnost.pochva1'); // Забираем не обработанные данные с датчика
$sat = round(map($hum,834,441,20,100)); // Вызываем функцию с параметрами и округляем
sg ('vlajnost.pochva1_obr',$sat); // Записываем влажность в процентах

function map($x, $in_min, $in_max, $out_min, $out_max) {
    return ($x - $in_min) * ($out_max - $out_min) / ($in_max - $in_min) + $out_min;
}
Циферки означают:
834 - Данные с сухого датчика
441 - Данные датчика в стакане с водой
20 - Начало отсчета в процентах при сухом датчике( дома по замерам 20% влажности)
100 - Конец отсчета в процентах при 100% влажности ( в стакане с водой)
За это сообщение автора dioxin поблагодарили (всего 2):
newz20 (Ср мар 06, 2019 3:12 pm) • skysilver (Пн мар 11, 2019 3:56 pm)
Рейтинг: 2.74%
Алиска прописана на Debian 8 | Мой канал на youtube по MajorDomo
Ответить