LovyanGFX入門 その11 スケッチ例解説

概要

前回は外部LCDを接続しました。今回はライブラリに同梱されているスケッチ例を確認していきたいと思います。

HowToUse/1_simple_use

一番最初に読むべきスケッチ例です。基礎的な使い方はすべてこの中に書いてあります。たまに読み返すと新しい発見や新機能が追記されていたりします。

HowToUse/2_spi_setting

外部LCDを利用する場合の設定方法が書いてあります。根本的な設定なのですが、通常はプリセットされているLCD内臓ボードを利用すると思うので、あまり見る必要はありません。必要になったときにも自動判定をしている設定値を参考にする場合が多いです。

HowToUse/3_fonts

一般的なテキスト描画系のスケッチ例です。どのフォントを利用しても基礎的なものはこのスケッチ例の利用方法となります。

HowToUse/4_unicode_fonts

マルチバイト系のフォント指定ですが、フォントはいろいろ増えているのでこのスケッチ例はあまり参考になりません。

上記にフォントの一覧があります。

種類フォント名サイズ
明朝体(固定長)lgfxJapanMincho_88, 12, 16, 20, 24, 28, 32, 36, 40
明朝体(英数プロポーショナル)lgfxJapanMinchoP_88, 12, 16, 20, 24, 28, 32, 36, 40
ゴシック体(固定長)lgfxJapanGothic_88, 12, 16, 20, 24, 28, 32, 36, 40
ゴシック体(英数プロポーショナル)lgfxJapanGothicP_88, 12, 16, 20, 24, 28, 32, 36, 40
中国語(簡体字)efontCN_1010, 12, 14, 16, 24b, bi, i
日本語efontJA_1010, 12, 14, 16, 24b, bi, i
韓国語efontKR_1010, 12, 14, 16, 24b, bi, i
中国語(繁体字)efontTW_1010, 12, 14, 16, 24b, bi, i

ざっくりと上記の一覧が現在はあります。今後増えるかもしれません。

#define LGFX_AUTODETECT
#include <LovyanGFX.hpp>

static LGFX lcd;

void setup() {
  lcd.init();
  lcd.fillScreen(TFT_BLACK);
  
  lcd.setFont(&fonts::lgfxJapanMincho_16);
  lcd.print("lgfxJapanMincho_16\n");

  lcd.setFont(&fonts::lgfxJapanMinchoP_16);
  lcd.print("lgfxJapanMinchoP_16\n");

  lcd.setFont(&fonts::efontJA_16_bi);
  lcd.print("efontJA_16_bi\n");
}

void loop() {
}

上記のように呼び出せます。

結果です。フォント名の数字は大きさを表しますので、数値を変えることで大きくなります。ただし、フォントの容量も大きくなるので注意してください。ある程度以上はsetTextSize()で拡大するような使い方のほうがよいかもしれません。

また、フォントは指定した場合にのみフラッシュの容量を消費します。たくさん利用するとすぐにフラッシュの容量が無くなってしまうので注意しましょう。

あまり利用することはないと思います、内蔵のefontはボードルとイタリック指定も可能です。efontは外部ライブラリでサイズが16ドット固定ですが、一文字単位で利用文字を選択できるものもありますので注意してください。スケッチ例のefontは外部ライブラリバージョンになります。

HowToUse/5_images

画像系のスケッチ例です。内容的にはこのブログでも同等のことは紹介してあると思います。新機能が更新されている場合があるので、たまに見直すとよいと思います。

Sprite/MovingIcons

HowToUse以外のスケッチ例は必要になってから確認すればよいと思いますが、このMovingIconsは高速化のノウハウが詰まっているので、ぜひ中身を解読してみてください。

内容的には縦に上中下の3分割して、短冊状の領域に対して描画を行っています。短冊状の領域はスプライトとして2枚確保して、交互に描画と転送を繰り返しています。DMA転送が終わる前にCPUでメモリ上に描画することにより高速化しています。

一見3回描画しているので、オーバーヘッドが大きそうですが、転送時間などを考えるとこの方式の方が早くなっています。通常は画面全体のスプライトは確保できませんが、M5StickCなどの小型画面系でCPUパワーが必要な3D系とかだと、一発描画の方が早い可能性があります。

まとめ

とりあえず、このブログと今回紹介したスケッチ例を読み込むことで通常の利用は問題ないと思います。あとは紹介していないスケッチ例を確認していくか、ソースファイルを読み込んで確認をする必要があります。

また、最近電子ペーパー系の対応が増えましたが、ちょっと今までと使い方が違うので次回に使い方の紹介をしたいと思います。

続編

コメント