ArduinoによるNeoPixel(WS2812B)の制御の続きです。質問があり、折角なので
以前作成した、8x8ドットマトリックスタイプのNeoPixelを制御するスケッチを汎用化(任意のサイズ対応)しました。
とりあえず手持ちの16x16ドットモジュールで試してみました。
動いている様子
利用したモジュールは、Aliexpressにて入手しまた。
1 pcs/lot DC5V 16x16 Pixel WS2812B LED Digital Flexible Individually addressable Panel light

このモジュールのNeoPixelの並びは次のようになっています。

接続
Arduino:D11 - NeoPixel:DIN
Arduino:5V - NeoPixel:5V
Arduino:GND - NeoPixel:GND
スケッチ
スケッチは、16x16ドットマトリックスに対応するように作成していますが、
下記の横ピクセル数、縦ピクセル数を変更することで、横8x縦8ドット、横32x縦8ドットにも対応出来ると思います。
#define PXCEL_W 16 // 横ピクセル数
#define PXCEL_H 16 // 縦ピクセル数
また、メッセージ表示の縦位置は NeoMsg()関数の最後の引数で指定出来ます。
スケッチは、Githubのgistにて公開しています。スケッチ表示の下部の帯のリンクから参照出来ます。
スケッチのコンパイルには、別途下記のライブラリが必要です。
ライブラリ
・Arduino用 美咲フォントライブラリ 教育漢字・内部フラッシュメモリ乗せ版
https://github.com/Tamakichi/Arduino-misakiUTF16
<2023/06/11 追記>
本記事に対して質問があり、16x16ドットマトリックスに8x8ドットフォントを表示した場合、確かに「文字、小さっ」ですよね~
ちょっと改造やってみました。
Arduino Uno的には、16ドットフォントデータを単体で載せるのは無理なので、
美咲フォント(8x8ドット)を倍角処理(16x16)して表示するバージョンを作ってみました。
倍角表示対応として、以下の関数を追加しています。
①NeoScrollInCharEx() 16x16ドットフォントのスクロール表示版
この関数は、NeoMsgEx()から呼び出されて利用します。
②NeoMsgEx() 倍角表示対応版
美咲フォント(8x8ドット)から倍角フォント(16x16ドット)を作成しています。
ソースのコメント部の倍角フォント作成(追加)でやってます。
倍角にするには、1ドットを4ドット(縦2倍x横2倍)にしています。
8x8ドットのフォントデータ uint8_t fnt[8] から1ドットあたり4ビットをuint16_t fntEx[16]に格納します。
追加の処理構造、倍角処理あたりのビット操作(ループで8x8ドットから1ビットの取り出し⇒1か0かの判断 ⇒ それを元に処理)、
自分的には、頭の中で処理や構造が「パッ」と短時間で映像で浮かんで、単にそれを実装(コード化)する感じなのですが、
これを文章化して人に伝えるには、フロチャートやPADに落とさないと無理かな~(-_-;)
( ⇒ コードを書いて示した方が早い? そうすると自力で悩まないのでスキルUP、育成に繋がらない
⇒ なのでヒント小出し
⇒ いじわるしていると思われる(-_-;) 、
以前もFacebookで「もったいぶらず、さったと答えを教えろ」的に攻撃してきた人がいたのでFacebook辞めました(>_<)
)
ソフトウェアの仕様伝達、ノウハウの具現化? 難しい..
その16x16ドットフォントをNeoScrollInCharEx()を呼び出して文字を表示します。
倍角表示

スケッチ
関連記事
NeoPixel(WS2812B)の制御 その4(2020.01.09) ・・・ 16x16マトリックスの制御(この記事です)
NeoPixel(WS2812B)の制御 その3(2018.05.30) ・・・ 8x8マトリックスの制御
NeoPixel(WS2812B)の制御 その2(2018.05.22) ・・・ SPIを使った制御
NeoPixel(WS2812B)の制御(2018.05.20) ・・・ GPIOを使った制御
最近のコメント