2025年10月5日日曜日

バーサライタ方式の電光掲示板2 (フォントデータの作成)

  「LEDマトリックス表示装置」では、東雲フォント16ビットを使用して表示させていました。

 今回はドット数が30ドットあるため、24ビットのビットマップフォントを使い、表示させるようにします。

 mgo-tec様のサイトで紹介されているライブラリ「ESP32_SPIFFS_ShinonomeFNT」をもとにして変更します。

 ここで紹介するプログラムは、ESP32マイコンであれば動作します。


ビットマップフォント24bitの取得

 まず、24ドットのピットマップフォントをダウンロードします。ファイル名は「intlfonts-1.4.2.tar.gz」です。ファイルを解凍すると様々なBDFフォントが含まれています。この中のフォルダ「Japanese.X」に、24ドットのBDFフォントが入っています。
 全角フォント「jiskan24.bdf」
 半角フォント「12x24rk.bdf」

 同じファイル名でも、取得するサイト(ファイル)により、BDFのファイル構造が異なっています。先頭からの位置がずれてしまいますので、他から取得する場合には注意が必要です。

フォント取得ライブラリの作成

 ライブラリ「ESP32_SPIFFS_ShinonomeFNT」をもとに変更させていただきました。
ライブラリを変更するにあたり、BDFフォントのファイル形式を知る必要があります。こちらも、mgo-tec様の「日本語漢字ビットマップフォント、東雲フォントについて」というサイトに説明があり、大変参考にさせて頂きました。

(1)クラス名の変更

 今回使用するフォントが東雲フォントから「jiskan24.bdf」になることから、クラス名を「 ESP32_LittleFS_JisKanjiFNT」にしました。

(2)フォント読み出し関数

 東雲フォントでは、「SjisToShinonome16FontRead」関数でフォントの読み出しを行っています。24ビットに対応するため、「SjisToJiskanji24FontRead」関数にして、フォントデータを32ビット長(uint32_t)のbuf[24]配列に格納するようにしました。
 この関数内から全角の場合には「LittleFS_Flash_JiskanjiFNTread_FHN」関数を呼び出しています。また、半角の場合には「LittleFS_Flash_JiskanjiFNTread_Half_FHN」関数呼び出しています。この関数内も24ビット対応させます。

(3)フォントのアドレス計算

 フォントを読み出すときに、アドレスの計算が必要になります。これを行っているのが、関数「SjisToJiskanjiFNTadrs」です。このチェックをするため、バイナリエディタでフォントファイルを開き、エディタのアドレスと計算しているアドレスをチェックして、すべてが対応するようにします。この作業が大変でした。

 ここまでのフォントを表示するプログラムをアップします。
   ファイル名 disp_jiskan24dot.zip


 実行するときに、LittleFSにデータをアップロードしておいてください。
 書き込み、実行するとシリアルモニタにフォントが表示されます。


LED表示装置でのフォント表示

 フォントは、ビットデータとして、配列 buf[] にを読み出されます。これを表示させることで、LED表示装置に表示させることができます。



0 件のコメント:

コメントを投稿

LEDマトリックス表示装置の設計・製作 9(画像表示)

  LEDマトリックスに画像を表示させるには、いろいろな画像形式を知る必要があります。現在、よく使われるJPG形式やPNG形式は圧縮処理されて保存されています。これに対して、BMP形式やTIFF形式は非圧縮形式で、画像データがそのまま保存されています。このため、ファイルは大きくな...