秋月電子で購入のSHARP LCD(400×240モノクロ)を ME-ESP32で動かしてみた Adafruitライブラリにフォントを追加

前回の投稿

では

 

で秋月電子で販売されている SHARPの400×240モノクロLCD(http://akizukidenshi.com/catalog/g/gP-04944/)を ME社製ESP32ボードで Adafruit_SHARP_Memory_Display に添付されているスケッチ例(sharpmemtest)のサンプルプログラムを動かすまででした。

今回は Adafruit GFX library にはTrueTypeフォントファイルを Adafruit GFX library で扱えるcのヘッダファイルに変換するコマンドが含まれていたので、このコマンドを使って Adafruit GFX library にフォントを追加してみることにした。

Adafruit GFX libraryを普通に導入した場合に使用できるフォントは「Arduino/libraries/Adafruit-GFX-Library/Fonts」フォルダに置いてあるようです。このフォルダに新しいフォントファイル(.h)を追加していけば Arduinoのスケッチから使えるようになるわけです。

変換コマンドはAdafruit GFX libraryを展開したフォルダ「Arduino/libraries/Adafruit-GFX-Library/fontconvert」にソースコードファイルで置いてあるので始めにビルド(コンパイル)する必要があります。Makefileもあったので windows上でもビルド出来るようですが今回は Linux (Raspberry Pi3) で以後の作業をする進めることにしました。

「Arduino/libraries/Adafruit-GFX-Library」フォルダ以下を Linux (Raspberry Pi3) に FTP等でコピーし、ターミナルを開いて make するだけでビルドは完了します。(warningが出ましたが気にしない。)

次に追加したTrueTypeフォントファイルを用意します。

今回は、Raspberry Pi 内にある「/usr/share/fonts/truetype/freefont/FreeMonoBold.ttf」と

 けしかんさんが作成されている 7・14SEGフォントの DSEG

 

の「DSEG7Classic-Bold.ttf」を用意し変換してみた。

変換は次の2つのコマンド列

./fontconvert FreeMonoBold.ttf 32 0 255 > FreeMonoBold64.h

./fontconvert DSEG7Classic-Bold.ttf 32 0 255 > DSEG7Classic_Bold32.h

を実行すれば FreeMonoBold32.h と DSEG7Classic_Bold32.h が出来上がり。

後はこの2つのファイルを 「Arduino/libraries/Adafruit-GFX-Library/Fonts」フォルダにコピーすれは Arduinoスケッチから使えるようになるというわけです。

windows上の ArduinoIDEで使う場合は Raspberry Pi から WindowsPC の 「Arduino/libraries/Adafruit-GFX-Library/Fonts」フォルダにFreeMonoBold32.hとDSEG7Classic_Bold32.hをコピーしましょう。

Raspberry Pi上での fontconvert コマンドのビルドからtrueTYpeフォントの変換までのRaspberry Pi のデスクトップの画像を載せておきます。こんな感じ。

 

なお、マルチバイト(日本語)フォントの変換はうまく行きませんでした。

半角英数字のASCIIコード(0-255)の範囲でのみこの変換コマンドは使えそうです。

上の数字のフォントは左から「FreeMonoBold」「DSEG7Classic_Bold」「システム標準」。