#include <Adafruit_NeoPixel.h> //Adafruit NeoPixelライブラリをインクルード
const int sensorPin = A0; //可変抵抗器用のアナログ入力
const int ledPin = 6; //LEDリング用のデータ入力
const int count = 8; // LEDリングのLEDの数を定義
//NeoPixelオブジェクトを作成。LEDの数、データピン、色の順序と周波数を指定
Adafruit_NeoPixel leds = Adafruit_NeoPixel(count, ledPin, NEO_GRB + NEO_KHZ800);
void setup() {
leds.begin(); //NeoPixelライブラリを初期化
//すべてのLEDをオフに設定。色相、彩度、明度
for(int i = 0; i < count; i++) {
leds.setPixelColor(i, leds.Color(0, 0, 0));
}
leds.show(); //設定を適用してLEDに反映
}
void loop() {
static unsigned int last_reading = -1; //前回の読み取り値を保存するための変数
int reading = analogRead(sensorPin); //可変抵抗器の値を読み取る
//読み取り値が前回と異なるとき
if (reading != last_reading) {
//読み取り値0-1023(可変抵抗器のアナログ入力の範囲)を
//0-65535(16ビットHSV色相の範囲)にマッピング(=値を対応させること)
unsigned int mappedSensorReading = map(reading, 0, 1023, 0, 65535);
for (int i = 0; i < count; i++) {
//LEDの色の設定。gamma32()でガンマ補正を施し32ビットカラーに変換。
//ColorHSVでHSVに基づいて色を生成。色相、彩度、明度
leds.setPixelColor(i, leds.gamma32
(leds.ColorHSV(mappedSensorReading, 255, 255)));
leds.show(); //設定を適用してLEDに反映
delay(25);
}
last_reading = reading; //前回の読み取り値を更新
}
}