说明
将数字从一个范围重新映射到另一个范围。也就是说,fromLow 的值将映射到 toLow,fromHigh 的值映射到 toHigh,值 in-between 到值 in-between,等等。
不将值限制在范围内,因为超出范围的值有时是有意的和有用的。如果需要限制范围,可以在此函数之前或之后使用 constrain()
函数。
请注意,任一范围的"lower bounds" 可能大于或小于"upper bounds",因此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;
}
注意事项和警告
如前所述,map() 函数使用整数数学。因此,分数可能会因此受到抑制。例如,像 3/2、4/3、5/4 这样的分数都将从 map() 函数返回为 1,尽管它们的实际值不同。因此,如果您的项目需要精确计算(例如电压精确到小数点后 3 位),请考虑避免使用map() 并自己在代码中手动实现计算。
相关用法
- Arduino max()用法及代码示例
- Arduino min()用法及代码示例
- Arduino millis()用法及代码示例
- Arduino micros()用法及代码示例
- Arduino long用法及代码示例
- Arduino Arduino_EMBRYO_2 - setLengthXY()用法及代码示例
- Arduino ~用法及代码示例
- Arduino ArduinoBLE - bleDevice.advertisedServiceUuidCount()用法及代码示例
- Arduino const用法及代码示例
- Arduino Ethernet - server.begin()用法及代码示例
- Arduino ArduinoBLE - BLEService()用法及代码示例
- Arduino digitalWrite()用法及代码示例
- Arduino ArduinoBLE - bleCharacteristic.subscribe()用法及代码示例
- Arduino Servo - attach()用法及代码示例
- Arduino write()用法及代码示例
- Arduino Arduino_LSM9DS1 - readGyroscope()用法及代码示例
- Arduino ArduinoSound - FFTAnalyzer.input()用法及代码示例
- Arduino MKRGSM - gprs.attachGPRS()用法及代码示例
- Arduino WiFiNINA - WiFi.config()用法及代码示例
- Arduino MKRGSM - sms.read()用法及代码示例
- Arduino MKRNB - getCurrentCarrier()用法及代码示例
- Arduino Scheduler - Scheduler.startLoop()用法及代码示例
- Arduino Arduino_LSM9DS1 - magneticFieldAvailable()用法及代码示例
- Arduino MKRWAN - available()用法及代码示例
- Arduino ArduinoBLE - BLE.poll()用法及代码示例
注:本文由纯净天空筛选整理自arduino.cc大神的英文原创作品 map()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。