Menu
CoddyTech

光量バー

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() を使うとバーを短くできます。これがないと、明るいときに点灯したピクセルは、暗くなっても点灯したままになります。

challenge icon

チャレンジ

中級

光センサーは 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);
}
quiz icon腕試し

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

ディスプレイとセンサーのすべてのレッスン

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