NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Arduino IDE(map関数の使い方)

■map関数
 map関数は数値をある範囲から別の範囲に変換します。

■使用例
 Arduino IDEで使用するmap関数の使用例は以下の通りです。試しにこのプログラムをArduino UNOで実行すると、オープンにしたA0ピンのランダムな電圧を10ビットで読み取り(0~5V:0~1023)、読み取った値をmap関数で8ビットに丸め(0~5V:0~255)、10ビットと8ビットにした値をPCのシリアルモニター上に図1の通り表示します。

void setup() {
  Serial.begin(9600);          //9600bpsでシリアルポートを開く
}

void loop() {
  int val1 = analogRead(0);    //オープンにしたA0ピンの値を「val1」に代入します
  int val2 = map(val1, 0, 1023, 0, 255); //「val1」の値10ビットを8ビットに丸め「val2」に代入
  Serial.print("val1=");       //「val1=」をシリアル出力します
  Serial.print(val1);          //「val1」の値をシリアル出力します
  Serial.print(" : val2=");    //「 : val2=」をシリアル出力します
  Serial.println(val2);        //「val2」の値をシリアル出力します
}
イメージ 1
図1:プログラム例

 イメージ 1
図2:プログラム実行結果

■構文
 map(value, fromLow, fromHigh, toLow, toHigh)

■パラメータ
 value         : 変換したい数値
 fromLow   : 現在の範囲の下限
 fromHigh  : 現在の範囲の上限
 toLow       : 変換後の範囲の下限
 toHigh      : 変換後の範囲の上限

■戻り値
 変換後の数値 (long)

■補足
 fromLowと同じ値を与えると、toLowが返り、fromHighと同じ値ならtoHighとなります。その中間の値は、2つの範囲の大きさの比に基づいて計算されます。そのほうが便利な場合があるので、この関数は範囲外の値も切り捨てません。ある範囲のなかに収めたい場合は、constrain関数と併用してください。 
 範囲の下限を上限より大きな値に設定できます。そうすると値の反転に使えます。

例 y = map(x, 1, 50, 50, 1); 

 範囲を指定するパラメータに負の数を使うこともできます。

例 y = map(x, 1, 50, 50, -100); 
 map関数は整数だけを扱います。計算の結果、小数が生じる場合、小数部分は単純に切り捨てられます。

イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【ArduinoIDE reference】目次に戻る