Node-RED:Рецепты/Как адаптировать значение из одного числового диапазона к другому

Материал из Онлайн справочника
Версия от 22:51, 26 апреля 2019; Myagkij (обсуждение | вклад) (→‎Внешние ссылки)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Черновик


Как адаптировать значение из одного числового диапазона к другому [1]

Проблема

Вам нужно адаптировать значение, принадлежащее к одному числовому диапазону, к другому числовому диапазону. К примеру, вам нужно подогнать данные от датчика в диапазоне между 0 и 1023 к диапазону напряжения между 0 и 5 вольтами.

Решение

Для этого можно воспользоваться нодой «Range».

Пример

[{"id":"80dae67d.b4d8f8","type":"inject","z":"535331d8.55c1f","name":"","topic":"","payload":"0","payloadType":"num","repeat":"","crontab":"","once":false,"x":130,"y":380,"wires":[["81f13534.456348"]]},{"id":"81f13534.456348","type":"range","z":"535331d8.55c1f","minin":"0","maxin":"1023","minout":"0","maxout":"5","action":"clamp","round":false,"name":"","x":350,"y":420,"wires":[["e80b61d7.4b399"]]},{"id":"cb21de23.75a2f","type":"inject","z":"535331d8.55c1f","name":"","topic":"","payload":"512","payloadType":"num","repeat":"","crontab":"","once":false,"x":130,"y":420,"wires":[["81f13534.456348"]]},{"id":"342552de.255a1e","type":"inject","z":"535331d8.55c1f","name":"","topic":"","payload":"1023","payloadType":"num","repeat":"","crontab":"","once":false,"x":130,"y":460,"wires":[["81f13534.456348"]]},{"id":"e80b61d7.4b399","type":"debug","z":"535331d8.55c1f","name":"","active":true,"console":"false","complete":"false","x":550,"y":420,"wires":[]}]

Разбор

Для линейного масштабирования значений между двумя разными числовыми диапазонами можно воспользоваться нодой «Range».

По умолчанию результат не будет ограничен рамками конечного диапазона, заданного в ноде. То есть, если взять пример выше с диапазоном между 0 и 5 вольтами, то значение «2046» по умолчанию даст результат «10».

Впрочем, в настройке «Action» ноду можно настроить, чтобы она просто ограничивала результат в рамках конечного диапазона или ограничивала его при помощи простых коэффициентных расчетов.

См.также

Внешние ссылки