M5Core2でLVGL

前回までのあらすじ

積んでいたM5Paperでカレンダー的なものを作ろうとE-Inkの表示周りの基本を学んでいたイナバちゃん、カレンダーの枠をデザインするのが面倒で再び積みの体勢を取り始めるのであった‥

前回というのはこの記事ですね。

M5Paperの画像表示でもうちょっと遊ぶ - イナバちゃんログ

画像ファイルの表示や基本図形の描画はできるものの、組み合わせてデザイン作るの大変だなーと思い始めたら急激に面倒臭くなってしまいました。

このままではまた積んじゃうので、ライブラリを使って横着する方向でなんとか積みを回避したいと思います。

ライブラリ

LVGLというライブラリがあって、なかなか良さそうなので今回はこれを使ってみます。

lvgl.io

まずは Getting Started を読みながらやってみますが、いきなりM5PaperではなくM5Core2をターゲットにします。E-Inkはクセがありますからね。。

Get Started

何はともあれ必要なライブラリをプロジェクトにインポートします。私はPlatformioを使っていますので、platformio.iniに下記を追加します。

lib_deps =  lvgl/lvgl@^8.0.1

CLIpio lib installするか、一回コンパイルしてライブラリをダウンロードします。
コンパイルした場合はlv_conf.hが無いと怒られたと思いますが、lvgl/lv_conf_template.hをコピーしてlv_conf.hを編集します。

f:id:hollyhockberry:20211010174947p:plain

最低限編集する項目は

  • 冒頭の#if 0#if 1に変更
  • LV_COLOR_DEPTHをデバイスに合わせて変更(今回は16にします)
  • LV_TICK_CUSTOM1にする

です。

後はドキュメントに従ってバッファ、イメージバッファフラッシュ処理、入力デバイス処理のハンドラを作成すればOKです。

シンプルなWidgetであるLabelを配置したサンプルを記述してみました。

f:id:hollyhockberry:20211010184634j:plain

期待通りで文字列が描画されています!(アイカツ!9周年おめでとうございます!!)

もっと動きがあるサンプルも見たかったので、LVGLのデモをインポートして、Benchmark demoを動かしてみました。

github.com

なんとなくわかったのでM5Paperで動かしましょう。

が、ちょっと長くなったので次回に続きます。