Menu
CoddyTech

NeoPixelの明るさ

CoddyのArduinoジャーニー「ディスプレイとセンサー」セクションの一部。レッスン 16/24。

NeoPixelは明るいです。ring.setBrightness(level)を使うと、すべての明るさを一度に下げられます。0は消灯、255は最大の明るさです。

これは、ボードのメモリに保存されている色をスケーリングすることで機能します。明るさが64(約4分の1)の場合、赤の値が255なら64として保存されます。ただし、スケーリングによって細部が失われます。明るさを0にすると、保存されている色はすべて0になり、その後明るさを上げてもスケーリングできる値が残っていないため、リングは暗いままです。

そのため、明るさを変更したら、その後に色を設定し直してください。

ring.setBrightness(level);
ring.fill(white);   // 新しい明るさで保存される
ring.show();

setBrightness()の後に設定した色は、保存時にスケーリングされます。

challenge icon

チャレンジ

中級

A0のつまみはリングの調光器です:

  • map()を使って読み取り値を0から255までの明るさに変換します
  • ring.setBrightness()で設定します
  • その後、loop()の各実行でリングを白く塗りつぶして表示します

Runを押してつまみを回し、その後Checkを押します。

自分で試してみよう

#include <Adafruit_NeoPixel.h>

// 16個のピクセル、データはピン6に接続
Adafruit_NeoPixel ring(16, 6, NEO_GRB + NEO_KHZ800);

uint32_t white = ring.Color(255, 255, 255);

void setup() {
  ring.begin();
}

void loop() {
  int reading = analogRead(A0);
  // ノブに合わせて明るさを設定し、リング全体を白く点灯させる
  delay(50);
}
quiz icon腕試し

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

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

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