• V
 

在不同的数值范围之间映射一个属性

问题

您想要将一个数字从一个数值范围缩放到另一个范围。例如,传感器读取值在 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 节点可以用于在线性上缩放两个不同的数值范围。

默认情况下,结果没有限制在节点定义的范围内。这意味着使用上述电压示例,值 2046 将映射到结果 10。

该节点可以配置为将结果约束在目标范围内,或应用简单的模运算,使得值在目标范围内循环。