名称
map()
説明
ある範囲の数値を別の範囲の数値に対応づける。すなわち、fromLowはtoLowに、fromHighは、toHighに、fromLowとfromHighの間の数値はtoLowとtoHighの間の数値に対応づけられる。
範囲外の値を意識して使う場合もあるし有効でもあるので、変換する値は指定された範囲に限定しない。範囲を制限する必要がある場合は、constrain()を、この関数の前後で利用すればいい。
下位境界値は上位境界値よりも大きくてもいいし、上位境界値は下位境界値より小さくてもいい。これにより、例えば、値の範囲を逆転させることができる。
|
|
負の値を使うこともでき,以下のような使い方も可能である。
|
|
map()関数は整数で計算をするため、計算結果が小数になっても、小数は生成しない。小数点以下は切り捨てられる。四捨五入をしたり平均をとったりはしない。
書式
long map(long value, long fromLow, long fromHigh, long toLow, long toHigh);
引数
value | 対応させる値。 |
fromLow | 対応前の値の下位境界。 |
fromHigh | 対応前の値の上位境界。 |
toLow | 対応後の値の下位境界。 |
toHigh | 対応後の値の上位境界。 |
戻り値
対応付けられた値。
使用例
|
|
補足
興味のある人向け。この関数のすべてのソースは以下の通り。
|
|
注意
既に言及しているが、map()関数は計算に整数を使う。このため小数は返却されない。例えば3/2や4/3、5/4は異なる値だが、map()では、全て1が返る。もしも、高精度の計算が必要な場合(例: 電圧が正確に小数点以下3桁が必要な場合)は、map()の使用を避け、自分で計算するように実装すること。
訳者註
使用例で、analogRead()で得られた10ビットの値を8ビットの値に変換する例が載っていますが、より正確には、以下ではないかと思います。
|
|
参照
言語 abs()
言語 constrain()
言語 max()
言語 min()
言語 pow()
言語 sq()
言語 sqrt()
オリジナルのページ
https://www.arduino.cc/reference/en/language/functions/math/map/
Last Revision: 2022/09/07
実装の解析
まだ解析していません。
最終更新日
September 7, 2022