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

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

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

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

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

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

Есть аналоговый емкостный датчик датчик влажности почвы:
СпойлерПоказать
SENS-SOIL-CAP-1024x768_0.jpg
SENS-SOIL-CAP-1024x768_0.jpg (69.32 КБ) 5611 просмотров
Получая с него данные, заметил что идут они с понижением - тоесть чем выше влажность, тем меньше значение.
Опустил датчик в стакан с водой, получил значение - 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 поблагодарили (всего 3):
newz20 (Ср мар 06, 2019 3:12 pm) • skysilver (Пн мар 11, 2019 3:56 pm) • aleks-zonov (Пт янв 31, 2020 12:34 pm)
Рейтинг: 3.49%
Алиска прописана на Debian 11 | Мой канал на youtube по MajorDomo
aleks-zonov
Сообщения: 91
Зарегистрирован: Пн фев 26, 2018 5:10 pm
Откуда: Киров
Благодарил (а): 21 раз
Поблагодарили: 5 раз

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

Сообщение aleks-zonov » Пт янв 31, 2020 12:33 pm

dioxin писал(а):
Ср мар 06, 2019 3:11 pm
Есть аналоговый емкостный датчик датчик влажности почвы:
СпойлерПоказать
SENS-SOIL-CAP-1024x768_0.jpg
Получая с него данные, заметил что идут они с понижением - тоесть чем выше влажность, тем меньше значение.
Опустил датчик в стакан с водой, получил значение - 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% влажности ( в стакане с водой)
Добрый день использовал ваш код для перевода АЦП с датчика давления воды в бар, не подскажите как можно получить не целые значения а хотя бы до десятых, сам в коде пока не силен могу только немного разобраться в примерах.
Аватара пользователя
SmoKE_xDDD
Сообщения: 816
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 110 раз
Поблагодарили: 898 раз

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

Сообщение SmoKE_xDDD » Пт янв 31, 2020 12:49 pm

$sat = round(map($hum,834,441,20,100), 2);

https://www.php.net/manual/ru/function.round.php
За это сообщение автора SmoKE_xDDD поблагодарил:
aleks-zonov (Пт янв 31, 2020 1:53 pm)
Рейтинг: 1.16%
aleks-zonov
Сообщения: 91
Зарегистрирован: Пн фев 26, 2018 5:10 pm
Откуда: Киров
Благодарил (а): 21 раз
Поблагодарили: 5 раз

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

Сообщение aleks-zonov » Пт янв 31, 2020 1:54 pm

SmoKE_xDDD писал(а):
Пт янв 31, 2020 12:49 pm
$sat = round(map($hum,834,441,20,100), 2);

https://www.php.net/manual/ru/function.round.php
Спасибо всё проще чем я думал, займусь изучением.
Ответить