Menu
CoddyTech

値を範囲内に保つ

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);
challenge icon

チャレンジ

簡単

つまみは 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 待つ
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

入力のすべてのレッスン

自分で練習してみよう: Arduinoプレイグラウンド