RP2040マイコンを使って、NeoPixelを制御して楽しもうというコンセプトです。
右のコネクタは、電池をつないでパソコンから離れても動くようにしています。
左のジャックから音声信号を入力してADコンバータに入力可能です。
ボタンが1つ or 2つ搭載しているので、外部入力または切り替えなどで使えます。
ArduinoIDE バージョン:2.3.2
Adafruit NeoPixel Library 1.12.2(2024.8.1時点の最新版は1.12.3)
①マイコン:PR2040-ZERO(RaspberryPiPico系)
②NeoPixel接続ピン GPI08(R1でショート)
③プッシュスイッチ1:GPI07
④プッシュスイッチ2:GPI06(2個搭載しているボードのみ)
⑤音声入力:GP26
カラーで徐々に色を変えてLEDを光らせるプログラムです。
カラーLEDでぱっと見映えるプログラムです。
動作チェックにも良いですね。
// カラーで徐々に色を変えてLEDを光らせるサンプルプログラム
#include <Adafruit_NeoPixel.h> // NeoPixel制御用ライブラリのインクルード
// 定数の定義
#define LED_PIN 8 // NeoPixelの信号接続端子
#define LED_COUNT_X 6 // ドットマトリックスの横のLED数
#define LED_COUNT_Y 6 // ドットマトリックスの縦のLED数
#define BRIGHTNESS 24 // 明るさを24に設定
// NeoPixelオブジェクトの作成
Adafruit_NeoPixel strip(LED_COUNT_X * LED_COUNT_Y, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin(); // NeoPixelの初期化
strip.setBrightness(BRIGHTNESS); // 明るさを24に設定
strip.show(); // 全てのピクセルをオフに初期化
}
void loop() {
// レインボーサイクルを全体に表示
rainbowCycle(15); // レインボーサイクルを表示する関数を呼び出し
}
// レインボーサイクルを表示する関数
void rainbowCycle(uint8_t wait) {
uint16_t i, j;
// すべての色を5サイクル表示
for(j = 0; j < 256 * 5; j++) {
for(i = 0; i < strip.numPixels(); i++) {
// 各ピクセルに色を設定
strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
}
strip.show(); // LEDマトリックスを更新
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); // 青から赤へのグラデーション
}
}
カラーLEDを光らせて一番見栄えがする光らせ方をさせたい!と思って光らせてみました。
スマホの動画だとスミアが出まくって見づらいですね。
実際のLEDはかなりきれいなんですけどね。