Map()
来自YFRobotwiki
描述
将一个数字重新映射到另一个范围。 也就是说,fromLow的值将被映射到ToLow,一个值从High到toHigh,值之间的值之间的值等。
不会将值限制在范围内,因为超出范围的值有时是有意义和有用的。 如果需要对范围的限制,则可以在该函数之前或之后使用constrain()函数。
请注意,任一范围的“下限”可能大于或小于“上限”,因此map()函数可用于反转数字范围,例如
y = map(x, 1, 50, 50, 1);
该函数也能很好的处理负数,所以这个例子
y = map(x, 1, 50, 50, -100);
也是有效的,效果很好。
map()函数使用整数数学,所以不会产生分数,当数学可能表明它应该这样做。 小数剩余部分被截断,而不是四舍五入或平均。
语法
map(value, fromLow, fromHigh, toLow, toHigh)
参数
- value:要映射的数字
- fromLow:值的当前范围的下限
- fromHigh:值的当前范围的上限
- toLow:值的目标范围的下限
- toHigh:值的目标范围的上限
返回
- 映射值
示例
/* Map an analog value to 8 bits (0 to 255) */ void setup() {} void loop() { int val = analogRead(0); val = map(val, 0, 1023, 0, 255); analogWrite(9, val); }
附录
对于数学的实现,这里是完整的函数
long map(long x, long in_min, long in_max, long out_min, long out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }
扩展阅读
更多建议和问题欢迎反馈至 YFRobot论坛