光量バー
CoddyのArduinoジャーニー「ディスプレイとセンサー」セクションの一部。レッスン 22/24。
リングは数値をバーとして表示できます。数値が大きいほど、点灯するピクセルが増えます。ここでは、数値は明るさのレベルです。
ナイトライトのレッスンと同様に、A0 の光センサーの読み取り値は、明るくなるほど小さくなります。まず値を反転させて、大きな数値ほど明るいことを示すようにします。
int light = 1023 - analogRead(A0);
int count = map(light, 0, 1023, 0, 16);次にリングを消灯し、ピクセル 0 から count より 1 小さい値まで点灯します。
ring.clear();
for (int i = 0; i < count; i++) {
ring.setPixelColor(i, yellow);
}
ring.show();clear() を使うとバーを短くできます。これがないと、明るいときに点灯したピクセルは、暗くなっても点灯したままになります。
チャレンジ
中級光センサーは A0 に、リングはピン 6 に接続されています。ライトバーを作りましょう:
- 読み取り値を反転させて、光が強いほど数値が大きくなるようにします
- 0 から 16 ピクセルの範囲に対応付けます
- リングを消灯し、ピクセル 0 からその数だけ点灯して、表示します
Run を押し、ボードに当たる光を変えてから、Check を押します。
自分で試してみよう
#include <Adafruit_NeoPixel.h>
// 16 個のピクセル、データはピン 6 に接続
Adafruit_NeoPixel ring(16, 6, NEO_GRB + NEO_KHZ800);
uint32_t yellow = ring.Color(255, 160, 0);
void setup() {
ring.begin();
}
void loop() {
int reading = analogRead(A0); // 明るくなるほど値が下がる
// 明るくなるほど多くのピクセルを点灯させる
delay(50);
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ディスプレイとセンサーのすべてのレッスン
自分で練習してみよう: Arduinoプレイグラウンド