Map()

来自YFRobotwiki
2017年9月13日 (三) 13:48Allblue讨论 | 贡献的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

描述

将一个数字重新映射到另一个范围。 也就是说,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;
}


扩展阅读

- constrain()




返回Arduino语法参考列表

更多建议和问题欢迎反馈至 YFRobot论坛