說明
將數字從一個範圍重新映射到另一個範圍。也就是說,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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。