つまみの棒グラフ
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を消灯するのがこの部分です。
チャレンジ
中級ノブは 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を点灯し、残りを消灯する
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
出力のすべてのレッスン
自分で練習してみよう: Arduinoプレイグラウンド