概要
arduinoのmap関数が便利そうなので、テストしてみた。
コード
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;
}
サンプルコード
void setup()
{
Serial.begin(115200);
Serial.println("ok");
long ans;
ans = map(300, 200, 500, 0, 100);
Serial.print("map(300, 200, 500, 0, 100) = ");
Serial.println(ans);
ans = map(600, 200, 500, 0, 100);
Serial.print("map(600, 200, 500, 0, 100) = ");
Serial.println(ans);
ans = map(100, 200, 500, 0, 100);
Serial.print("map(100, 200, 500, 0, 100) = ");
Serial.println(ans);
ans = map(300, 200, 500, -400, 0);
Serial.print("map(300, 200, 500, -400, 0) = ");
Serial.println(ans);
ans = map(600, 200, 500, 0, 100);
ans = constrain(ans, 0, 100);
Serial.print("map2(600, 200, 500, 0, 100) = ");
Serial.println(ans);
ans = map(100, 200, 500, 0, 100);
ans = constrain(ans, 0, 100);
Serial.print("map2(100, 200, 500, 0, 100) = ");
Serial.println(ans);
}
void loop()
{
}