説明
ある指定した範囲にある、ある数値を、別の指定した範囲の数値に割り当てた値で取得します。
構文
書き方 | ans=map(value, fromLow, fromHigh, toLow, toHigh) |
戻り値 | (long)ans…再び割り当てられた新しい値 |
引数 | (long)value…変換したい元の数値 (long)fromLow…元の数値の範囲(下) (long)fromHigh…元の数値の範囲(上) (long)toLow…再マップしたい範囲(下) (long)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); }
注意
map関数は、内部的な処理として下記のように整数値計算の値を返しています。
そのため、分数・小数点などの計算値はすべて1を返してしまいます。
確実に再マップしたい場合には自分で計算をして求めることをお勧めします。
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; }