2020年12月21日月曜日

WS2812BマトリクスLEDにbmpファイルを表示

WS2812BマトリクスLEDにbmpファイルの画像を表示しようと、 XIAOと1.8インチ小型液晶で小型フォトフレーム のときに使った Adafruit_ImageReader ライブラリを調べたところ、Loadした画像データの各ピクセルにアクセスする方法がなかった。これは液晶ディスプレイに表示するライブラリとセットで使うことが前提のようです。

ググってみても事前にbmpファイルを変換してテキストにする方法しか見つからず、自分でbmpを読むしかないのかと、半分あきらめていたら以下の記事を見つけました。

Arduino IDEのBITMAP decoder

これこそ欲しかったものです。感謝です。

早速組み込んで表示してみました。サンプルはSPIFFSのbmpファイルを読むようになっていましたが、microSDからも読み込めます。


LEDに送り込むRGB値を元画像のRGB値の1/32にして輝度はかなり絞っています。それでもまぶしい。
表示・スクロールしている16ドットのドット絵は、以下のサイトのものを使わせていただきました。


Arduinoに敬意を表しイタリアの国旗を先頭に、日本、UK、USA、サンタ、門松の順に表示しています。UKだけ余白を白にしてみました。門松の絵はよく分かりませんね。

以下のようなbmpファイルをそのままmicroSDに入れて読んで表示しています。


横幅は16ピクセルでなくて、もっと長くても大丈夫(だと思います)。

MicroSDに入れたテキストをマトリクスLEDに表示 で書いた東雲フォントの表示もUTF8ではなく、SJISのままで表示できるようになりました。これでWindowsのメモ帳などで書いたテキストをそのままmicroSDに入れて、表示させることができます。

こちらはにSJISでアクセスするよい方法が見つからず、ESP32_SPIFFS_ShinonomeFNTライブラリにSJIS用メソッドを追加しました。以下が、ESP32_SPIFFS_ShinonomeFNT の作者による解説記事です。こちらにも大いに感謝です。


Aliexpressからメールが届き、追加で注文したマトリクスLEDが国内に届いたらしい。しかし、ここから結構日数がかかることがあるので、どうなるか?! 年内に5枚並べて確認できるか微妙なところです。

0 件のコメント:

コメントを投稿