秋月電子で購入のSHARP LCD(400×240モノクロ)を ME-ESP32で動かしてみた Adafruitライブラリにフォントを追加
前回の投稿
では
- Adafruit_SHARP_Memory_Display
- Adafruit GFX library
で秋月電子で販売されている 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」「システム標準」。