Menu
CoddyTech

虹色のリング

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();
challenge icon

チャレンジ

中級

リングの周りを虹色に塗りましょう:

  • ピクセル 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() {
}
quiz icon腕試し

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

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

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