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を光らせるサンプルプログラムです。
// シリアルで数字を1から6を送ると
// LEDをイコライザのように光らすプログラム
// 1から3は、緑色、4と5は黄色、6は赤色で光らす
#include <Adafruit_NeoPixel.h>
#define LED_PIN 8 // NeoPixel信号接続端子
#define LED_COUNT 6 // LEDの数を指定 6個
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
Serial.begin(9600); // シリアル通信を開始
strip.begin();
strip.show(); // Initialize all pixels to 'off'
strip.setBrightness(24); // 明るさ倍率設定 (RGB設定値 * 明るさ倍率、最大255)
}
void loop() {
if (Serial.available() > 0) { // シリアルポートからデータが受信されたかどうかを確認
int data = Serial.parseInt(); // 受信したデータを整数として読み取る
strip.clear(); // すべてのLEDを消す
// データが1から6の場合、指定された数のLEDを点灯
if (data >= 1 && data <= 6) {
for (int i = 0; i < data; i++) {
// 各LEDを点灯させる
if (i < 3) {
strip.setPixelColor( i, 0, 255, 0); // LED1からLED3は緑色
} else if (i < 5) {
strip.setPixelColor( i, 255, 255, 0); // LED4からLED5は黄色
} else {
strip.setPixelColor( i, 255, 0, 0); // LED6は赤色
}
}
}
strip.show(); // LEDを更新
delay(100); // 20m秒待機
}
}
シリアルモニタから数字を入力して任意のLEDを光らせたい。
シリアルモニタから数字1から6の値を一つを送ると0.5秒点灯して消灯します。
やりたかったのは、音声入力をGP26に1.65V基準で入力できるボードにしています。
GPIO26は、ADコンバータにつながっており
ADコンバータで得られた値をFFT(高速フーリエ変換)してイコライザみたいに光らせて
遊んでみたかったので、まずは数値を送って表示の原型として試行したプログラムです。
4を送信したら、NeoPixelが4つ点灯します。