鮮やかに発光するNeoPixelのマトリクスボードを入手しました。
GPIO1本と簡単な命令で多くのLEDを個別に鮮やかな制御ができるのが魅力です。
今回紹介するもの
CJMCU-8*8 (WS2812)
特徴
1本のGPIOだけ(電源とGNDは必要)で、複数のLEDをフルカラーで制御できる。
連結ができる。
製品情報
電源 | 5V |
LED数 | 64個(横8, 縦8) |
外観
前面
背面
使用感
配線もシンプルで、制御命令が非常に簡単です。
連結ができるので、1個のセルを複数連結することで大きなものや長い作品も簡単に作れます。
今回は8×8マトリクスを使用していますが、全点灯させると結構発熱します。
放熱板やファンを取り付けたいところです。
準備
配線
Raspberry Pi Pico | 配線 | CJMCU 8*8 |
---|---|---|
VBUS | 赤 | +5V |
GND | 黒 | GND |
GP0 | 緑 | DIN |
モジュールライブラリ
WS2812を制御するためのライブラリにはAdafruit NeoPixelライブラリを使用します。
検索 | neopixel |
ライブラリ名 | Adafruit NeoPixel by Adafruit(x.x.x)※ |
使い方
WS2812 1個制御
説明
1個目のLEDを発光させます。
1秒間隔で、赤->緑->黄->青->紫->水->白 の順で点灯させます。
スケッチ
/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by tamanegi
Released under the MIT license
'http://tamanegi.digick.jp/about-licence/
【スケッチの説明】
動作確認は Raspberry Pi Pico で行っていますが、CPUは不問です。
WS2812を点灯させます。
1秒間隔で、赤->緑->黄->青->紫->水->白 の順で点灯させます。
【ライブラリ】
Adafruit NeoPixel by Adafruit 1.10.6
【準備】
Raspberry Pi Pico <-> W2182 Matrix 8x8
Vcc(5V) <-> 5V
GND <-> GND
GP0 <-> DIN
【バージョン情報】
2022/8/9 : 新規
2022/10/4 : YD-RP2040 実装WS2812 のサンプルプログラムを GP0にピン番号を変更
**********************************************************************/
#include <Adafruit_NeoPixel.h>
#define DIN_PIN 0 // NeoPixel の出力ピン番号はGP23
#define LED_COUNT 1 // LEDの連結数
#define WAIT_MS 1000 // 次の点灯までのウエイト
#define BRIGHTNESS 128 // 輝度
Adafruit_NeoPixel pixels(LED_COUNT, DIN_PIN, NEO_GRB + NEO_KHZ800);
void setup()
{
pixels.begin(); //NeoPixel制御開始
}
void loop()
{
pixels.clear();
//pixels.Color(Red, Green, Blue)で、パレット情報を作成する。
//赤点灯
pixels.setPixelColor(0, pixels.Color(BRIGHTNESS, 0, 0));
pixels.show();
delay(WAIT_MS);
//緑点灯
pixels.setPixelColor(0, pixels.Color(0, BRIGHTNESS, 0));
pixels.show();
delay(WAIT_MS);
//赤 + 緑 で 黄点灯
pixels.setPixelColor(0, pixels.Color(BRIGHTNESS, BRIGHTNESS, 0));
pixels.show();
delay(WAIT_MS);
//青点灯
pixels.setPixelColor(0, pixels.Color(0, 0, BRIGHTNESS));
pixels.show();
delay(WAIT_MS);
//赤 + 青 で 紫点灯
pixels.setPixelColor(0, pixels.Color(BRIGHTNESS, 0, BRIGHTNESS));
pixels.show();
delay(WAIT_MS);
//緑 + 青 で 水点灯
pixels.setPixelColor(0, pixels.Color(0, BRIGHTNESS, BRIGHTNESS));
pixels.show();
delay(WAIT_MS);
//赤 + 緑 + 青 で 白点灯
pixels.setPixelColor(0, pixels.Color(BRIGHTNESS, BRIGHTNESS, BRIGHTNESS));
pixels.show();
delay(WAIT_MS);
}
結果
1個だけ点灯させました。
使用したモジュールは 8×8 合計64個ありますので、次のスケッチで紹介します。
コメント