-
RP2040-ZEROを使ってNeoPixelを制御するサンプルプログラム④です。
-
サンプルプログラム内容
虹色に光らせて徐々に色を変化するのを眺めて癒される
-
プログラム環境
ArduinoIDE バージョン:2.2.1
使用ライブラリAdafruit NeoPixel Library 1.12.2 -
ハードウェアの主な仕様
マイコン:PR2040-ZERO
NeoPixel接続ピン GPIO8
乾電池2本でお外へ持ち出し可能。 -
サンプルプログラム
少し明る過ぎるようでしたら、BRIGHTNESSの数値を下げると暗くなります。
#include <Adafruit_NeoPixel.h>
#define LED_PIN 8
#define LED_COUNT_X 6
#define LED_COUNT_Y 6
#define BRIGHTNESS 24 // 明るさを24に設定
Adafruit_NeoPixel strip(LED_COUNT_X * LED_COUNT_Y, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.setBrightness(BRIGHTNESS); // 明るさを24に設定
strip.show(); // 全てのピクセルをオフに初期化
}
void loop() {
// レインボーサイクルを全体に表示
rainbowCycle(25);
}
// レインボーサイクル
void rainbowCycle(uint8_t wait) {
uint16_t i, j;
for(j = 0; j < 256 * 5; j++) { // 5 cycles of all colors on wheel
for(i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
}
strip.show();
delay(wait);
}
}
// Wheel関数: 色相を取得
uint32_t Wheel(byte WheelPos) {
if(WheelPos < 85) {
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
} else if(WheelPos < 170) {
WheelPos -= 85;
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
} else {
WheelPos -= 170;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
}
メインはloopを繰り返しています。
カッコの数値は、更新時間を設定しています。
数値を大きくすると色の変化がゆっくりになります。
数値を小さくすることで、色変化しているのが分かりやすいですね。
void loop() {
// レインボーサイクルを全体に表示
rainbowCycle(25);
}
numPixelsでLEDの個数を取得しています。
変数iでLEDの個数分の色を指定しています。
それが終わったらshowでLEDの表示を更新しています。
// レインボーサイクル
void rainbowCycle(uint8_t wait) {
uint16_t i, j;
for(j = 0; j < 256 * 5; j++) { // 5 cycles of all colors on wheel
for(i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
}
strip.show();
delay(wait);
}
}
上のレインボーサイクルで送信する色の部分を作成
// Wheel関数: 色相を取得
uint32_t Wheel(byte WheelPos) {
if(WheelPos < 85) {
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
} else if(WheelPos < 170) {
WheelPos -= 85;
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
} else {
WheelPos -= 170;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
}
虹色に色を変えながら徐々に変わっていくのを眺めると
癒されますね!
プログラミングは我流でちゃんと勉強しておらず、
動けばOKな感覚でやっているので、
間違っているところがあればご指摘をもらえると嬉しいです