Node-RED:Рецепты/Как адаптировать значение из одного числового диапазона к другому
Как адаптировать значение из одного числового диапазона к другому [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» ноду можно настроить, чтобы она просто ограничивала результат в рамках конечного диапазона или ограничивала его при помощи простых коэффициентных расчетов.
См.также
Внешние ссылки