概要
の続き。Hello worldの次は、ボードのボタンをトリガにして、表示切り替えをしてみる。
サンプル
samples/subsys/display/lvglをベースにして、
src/main.cを以下に変えた。
- 黒背景にする
- 使うFONTをCONFIG_LV_FONT_MONTSERRAT_20に変更
- 起動後の時間と年月日の表示をボードのボタンでトグルする
overlayは前回と同じく
st7789v_waveshare_320x172.overlay
を使うので、ビルドは以下でできる
$ west build -p always -b nucleo_f401re lvgl_test -- -DSHIELD=st7789v_waveshare_320x172
[530/530] Linking C executable zephyr/zephyr.elf
Memory region Used Size Region Size %age Used
FLASH: 323772 B 512 KB 61.75%
RAM: 53824 B 96 KB 54.75%
SRAM0: 0 GB 96 KB 0.00%
IDT_LIST: 0 GB 32 KB 0.00%
Generating files from /media/data/work/zephyr_work/zephyrproject/zephyr/build/zephyr/zephyr.elf for board: nucleo_f401re
なので、FLASHとRAMの使用は半分強になる。これではbmpとかを表示するのは無理か。。
結果
成功。
気づき
prj.conf
prj.confでLVが使う資源を宣言するが、ちょっとでも間違うとビルドエラーや、真っ黒表示になる。
なので、まずはサンプルの実績のあるprj.confを使って、カスタマイズするほうが良い。
フォントサイズごとにせっていするのは面倒だけど。
displayデバイス
プログラム内で適切にdisplayデバイスをセットしないと、真っ黒表示になる
サンプルのプログラムでいうと、以下の行がないと表示されない。
#include <zephyr/drivers/display.h>
const struct device *display_dev;
display_dev = DEVICE_DT_GET(DT_CHOSEN(zephyr_display));
display_blanking_off(display_dev);
lv_timer_handlerのコール周期
10〜20ミリ間隔で呼ぶ必要あり。

