(1) ライブラリの関係
LovyanGFX
- らびやん氏が開発したグラフィックライブラリ。
- 多様なディスプレイをサポート。
- ESP32以外のマイコンもサポート。(つまりM5Stack専用ではない)
- 高速描画、日本語フォント対応、スプライト機能などが特長。
M5GFX
- M5Stack公式のグラフィックライブラリ。
- LovyanGFXを元にM5Stack製品用に特化している。
- LovyanGFXのソースを多く流用しているが、LovyanGFXとは別物。 (LovyanGFXに依存はしない)
M5Unified
- M5Stack全製品を共通APIで扱える統合ライブラリ。
- グラフィックにはM5GFXを利用。(つまり、M5Unified は M5GFX に依存)
- ディスプレイ以外に、ボタン・センサー・スピーカーなども統一的に扱える。
(2) M5GFXベースのプロジェクトをLovyanGFXベースに移植
M5GFXを使用したM5Stack用プロジェクトを、LavyanGFXを使用して他のマイコンに移植するには?
構造・初期化の違い
- M5GFXは、M5Stack製品に特化されており、M5GFX display; display.begin() でハードに応じた設定が済む。
- LovyanGFXは、LGFX_Deviceクラスを継承して、マイコンのピンアサインや通信方式を定義する必要がある。
M5GFXのM5GFXクラスもLGFX_Deviceクラスを継承している。)
#include <M5GFX.h> M5GFX display; void setup() { display.begin(); display.drawString("Hello M5Stack", 10, 10); }
↓
#include <LovyanGFX.hpp> class LGFX_HOGE : public lgfx::LGFX_Device { …(中略)... }; LGFX_HOGE display; void setup() { display.begin(); display.drawString("Hello HOGE", 10, 10); }
(3) M5UnifiedベースのプロジェクトをLovyanGFXベースに移植
M5Unifiedを使用したM5Stack用プロジェクトを、LavyanGFXを使用して他のマイコンに移植するには?
(ただし、グラフィック処理のみ)
構造・初期化の違い
- M5Unifiedでは、M5オブジェクトのメンバとして、M5GFXクラスのオブジェクト M5.Display がある。
- auto cfg = M5.config(); M5.begin(cfg); で M5.Display も含めて初期化がなされる。
#include <M5Unified.h> void setup() { auto cfg = M5.config(); M5.begin(cfg); M5.Display.drawString("Hello M5Stack", 10, 10); }