値を範囲内に保つ
CoddyのArduinoジャーニー「入力」セクションの一部。レッスン 11/22。
範囲の一部だけを対象にしたい場合もあります。たとえば、つまみの移動範囲の中央部分、つまり読み取り値が200から800までの範囲だけを使い、それを0から100パーセントにしたいとします。
int percent = map(reading, 200, 800, 0, 100);これにより、200では0、800では100になりますが、map()は範囲の端で値を止めません。読み取り値が0の場合は-33、1023の場合は137になります。0未満または100を超えるパーセント値は意味をなしません。
constrain(x, low, high)は数値を範囲内に保ちます。lowより小さい値はlowになり、highより大きい値はhighになり、その間の値はそのままです。
percent = constrain(percent, 0, 100);チャレンジ
簡単つまみは A0 に接続されています。読み取り値 200~800 を 0~100 として扱い、パーセントを出力してください。
- 読み取り値を 200~800 から 0~100 に対応付けます
constrain()で 0~100 の範囲に収めます- 出力してから、100 ms 待ちます
Runを押し、つまみを両方向にいっぱいまで回してから、Checkを押します。
自分で試してみよう
void setup() {
Serial.begin(9600);
}
void loop() {
int reading = analogRead(A0);
// 200..800 を 0..100 に変換し、0..100 の範囲に収めて出力し、100 ms 待つ
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
入力のすべてのレッスン
自分で練習してみよう: Arduinoプレイグラウンド