ArduinoIDE バージョン:2.2.1
使用ライブラリAdafruit NeoPixel Library 1.12.0
マイコン:PR2040-ZERO
NeoPixel接続ピン GPIO8
乾電池2本でお外へ持ち出し可能。
#include <Adafruit_NeoPixel.h>
#define LED_PIN 8 // NeoPixelのデータピン
#define LED_COUNT 36 // LEDの総数 (6x6)
#define LED_WIDTH 6 // LEDマトリクスの幅
#define LED_HEIGHT 6 // LEDマトリクスの高さ
#define LED_BRIGHTNESS 24 // LEDの明るさ (0-255)
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.setBrightness(LED_BRIGHTNESS); // 明るさの設定
strip.show(); // 初期化時は全てのLEDを消灯する
}
void loop() {
// 例:LED配列の(2, 3)の位置にLEDを点灯させる
int x = 2;
int y = 3;
int ledIndex = getLedIndex(x, y);
if (ledIndex != -1) {
strip.setPixelColor(ledIndex, 255, 255, 255); // (R, G, B) の色指定
strip.show();
}
delay(1000); // 1秒間LEDを点灯させる
}
// (x, y) 座標からLEDのインデックスを取得する関数
int getLedIndex(int x, int y) {
if (x >= 0 && x < LED_WIDTH && y >= 0 && y < LED_HEIGHT) {
return y * LED_WIDTH + x; // 座標からインデックスを計算
}
return -1; // インデックスが範囲外の場合は-1を返す
}
データピンは、マイコンのGPIO8ピンとNeoPixelが接続してめ決定しています。
#define LED_PIN 8 // NeoPixelのデータピン
NeoPixelの数を決めています。
#define LED_COUNT 36 // LEDの総数 (6x6)
マトリックスの縦横のLED数を指定しています。
LEDを光らせる場所を、横を0から幾つ、縦に0から幾つといった
指定をするために定義しています。
#define LED_WIDTH 6 // LEDマトリクスの幅
#define LED_HEIGHT 6 // LEDマトリクスの高さ
NeoPixelの明るさを指定します。
MAX値は255ですが、USBの供給能力を考慮すると127以下での使用がベターです。
昼間の日の下でなければ十分な明るさになります。
部屋の中で使用するならば16から32ぐらいで十分な明るさがあります。
#define LED_BRIGHTNESS 24 // LEDの明るさ (0-255)
NeoPixelに信号を送るときの命令です。
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
光らせる場所を指定する。
このサンプルプログラムの場合、
左上から0, 1, 2と数えて2番目
左上から0, 1, 2, 3と数えて3番目
を指定したところが光ります。
// 例:LED配列の(2, 3)の位置にLEDを点灯させる
int x = 2;
int y = 3;
上で設定したx, yの位置指定をLEDの順番指定「ledIndex」に変換します。
LEDは、RED, GREEN, BLUEで指定しています。
RED, GREEN, BLUEは、255に指定しているのでLEDが白色で光ります。
int ledIndex = getLedIndex(x, y);
if (ledIndex != -1) {
strip.setPixelColor(ledIndex, 255, 255, 255); // (R, G, B) の色指定
strip.show();
}
これを踏まえて(1, 1) R=255, G=0, B=0とすると
(2, 2)が赤色に光ります。
int x = 1;
int y = 1;
int ledIndex = getLedIndex(x, y);
if (ledIndex != -1) {
strip.setPixelColor(ledIndex, 255, 0, 0); // (R, G, B) の色指定
strip.show();
}