Menu
CoddyTech

つまみの棒グラフ

CoddyのArduinoジャーニー「出力」セクションの一部。レッスン 18/24。

LEDを一列に並べると、数値をバーとして表示できます。点灯しているLEDが多いほど、数値は大きくなります。ここでは、数値はノブから取得します。

まず、読み取った値を点灯させるLEDの数(0~5)に変換します。

int count = map(analogRead(A0), 0, 1023, 0, 5);

次に、forループですべてのLEDを確認し、それぞれについて判断します。位置がcountより前のLEDは点灯し、それ以外は消灯します。

for (int i = 0; i < 5; i++) {
  if (i < count) {
    digitalWrite(ledPins[i], HIGH);
  } else {
    digitalWrite(ledPins[i], LOW);
  }
}

elseが重要です。ノブを下げたとき、バーに含まれなくなったLEDを消灯するのがこの部分です。

challenge icon

チャレンジ

中級

ノブは A0 に接続され、LED は ledPins に格納されています。棒グラフを作りましょう。

  • 読み取り値を map() で 0 から 5 までの個数に変換します
  • 配列の先頭からその個数分の LED を点灯し、残りは消灯します
  • 10 ms 待ってから、もう一度繰り返します

Run を押してノブを回し、次に Check を押します。

自分で試してみよう

const int knobPin = A0;
int ledPins[] = {2, 3, 4, 5, 6};

void setup() {
  for (int i = 0; i < 5; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
}

void loop() {
  // 読み取り値を0から5までの個数に変換する
  // 先頭からその個数のLEDを点灯し、残りを消灯する
}
quiz icon腕試し

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

出力のすべてのレッスン

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