虹色のリング
CoddyのArduinoジャーニー「ディスプレイとセンサー」セクションの一部。レッスン 17/24。
虹の赤、緑、青を選ぶのは大変です。色相ならもっと簡単です。赤から黄色、緑、シアン、青、マゼンタを経て、再び赤に戻る色相環を一周する1つの数値です。
ring.ColorHSV(hue)は色相を色に変換します。色相は0から65535までで、0は赤、約21845は緑、約43690は青、そして65536なら再び赤になります。
1つの虹を16個のピクセルに広げるには、各ピクセルの値を1つ前より65536 / 16 = 4096ずつ大きくします。ピクセル15には61440が必要で、これはintで扱える範囲を超えるため、色相はlongで保持し、数値を4096Lと記述します。Lを付けることで、乗算にもlongが使われます。
for (int i = 0; i < 16; i++) {
long hue = i * 4096L;
ring.setPixelColor(i, ring.ColorHSV(hue));
}
ring.show();チャレンジ
中級リングの周りを虹色に塗りましょう:
- ピクセル 0 は赤(色相 0)
ring.ColorHSV()を使い、次の各ピクセルは色相環をさらに 4096 進みます- これで 16 個のピクセルが色相環を 1 周します
Run を押してから、Check を押してください。
自分で試してみよう
#include <Adafruit_NeoPixel.h>
// 16個のピクセル、データはピン6に入力
Adafruit_NeoPixel ring(16, 6, NEO_GRB + NEO_KHZ800);
void setup() {
ring.begin();
// 各ピクセルにそれぞれ異なる色相を設定し、ピクセル0を赤にする
ring.show();
}
void loop() {
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ディスプレイとセンサーのすべてのレッスン
自分で練習してみよう: Arduinoプレイグラウンド