Arduinoのmap()とconstrain()
以下と同じ
code: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;
}
z = map(x, in_min, in_max, out_min, out_max)でx < in_min もしくはx > in_maxだとout_min <= z <= out_maxにはならない
constrain(x, out_min, out_max)で制限する必要がある
constrain(x, a, b)
返る値
x
a <= x <= bの場合
a
x < a
b
x > b
constain()の実装方法の関係で以下はダメ
code:wrong_constrain
int constrainedInput = constrain(Serial.parseInt(), minimumValue, maximumValue); // ダメ
関数呼び出しなどは外で
code:constrain
int input = Serial.parseInt(); // 他の命令はconstrain関数の外に置く
int constrainedInput = constrain(input, minimumValue, maximumValue);