02.Wio Terminalで日本語表示


02.Wio Terminalで日本語表示

LovyanGFXライブラリを使用して日本語を表示させます。以前M5で使用したefontJA_24_bはメモリサイズオーバーで載せられませんでした。そこで、字が小さくてもきれいに見えるefontで、efontEnableJaMiniを選びました。スクロール表示させています。

LovyanGFXライブラリの確認

Aruino-IDE > ツール > ライブラリを管理... > "LovyanGFX"で検索
"LovyanGFX by lovyan03 バージョン0.4.12"に更新 > 閉じる

日本語フォントの確認

Aruino-IDE > ツール > ライブラリを管理... > "efont"で検索
"efont Unicode Font Data by TANAKA Masayuki バージョン1.0.7"に更新 > 閉じる

1行文字数と文字倍率(実測)

フォント:efontEnableJaMini
1行
文字
行数設定
倍率
20151
18141.1
17131.17
16121.2
15111.33
14101.4
13101.5
1291.6
1072
* 1行19文字の設定はできませんでした。もっと詳しく設定すれば最適倍数が見つかるかもしれません。
(参考)倍率=1.1の時、320/16ドット/1.1=18.18文字,240/16/1.1=13.63行

太字

以前M5で使用した日本語・サイズ24・太字は容量が大きくて使えませんでした。(あるスケッチ中で測定)
フォント使用flashサイズ
efontJA_10_b310,784B (60%)
efontJA_12_b390,256B (76%)
efontJA_14_b476,432B (93%)
efontJA_16_bNG
efontJA_24_bNG
lgfxJapanGothic_16241,200B (47%)
lgfxJapanGothic_24360,592B (70%)
* flashサイズ=512kB

定義済みの色

TFT_BLACK0x0000(0,0,0)
TFT_NAVY0x000F(0,0,128)
TFT_BLUE0x001F(0,0,255)
TFT_DARKGREEN深緑0x03E0(0,128,0)
TFT_DARKCYAN深青緑0x03EF(0,128,128)
TFT_GREEN0x07E0(0,255,0)
TFT_CYAN青緑0x07FF(0,255,255)
TFT_MAROON0x7800(128,0,0)
TFT_PURPLE0x780F(128,0,128)
TFT_OLIVE薄緑0x7BE0(128,128,0)
TFT_DARKGREY濃灰0x7BEF(128,128,128)
TFT_GREENYELLOW黄緑0xB7E0(180,255,0)
TFT_LIGHTGREY薄灰0xC618(192,192,192)
TFT_RED0xF800(255,0,0)
TFT_MAGENTA赤紫0xF81F(255,0,255)
TFT_ORANGE0xFDA0(255,180,0)
TFT_YELLOW0xFFE0(255,255,0)
TFT_WHITE0xFFFF(255,255,255)
* 16ビット65,536色 LCDライブラリより

スケッチ


// 日本語表示 efont.ino 字が細い
//#include <efontEnableJa.h>    // フォント日本語   10835文字 368kB
#include <efontEnableJaMini.h>  // フォント日本語ミニ 4107文字 140kB(常用漢字+α)
#include <efontFontData.h>      // efontのフォントデータ
#define LGFX_AUTODETECT         // 対応機種を自動認識
#include <LovyanGFX.hpp>        // ヘッダをinclude efontのinclude後に
static LGFX lcd;                // LGFXのインスタンスを作成
float s = 1.0;                  // 文字サイズ

void setup() {
  lcd.init();                     // LCD初期化
  //lcd.setRotation(1);           // 回転方向(0-3) 上下反転(4-7)
  lcd.setBrightness(64);          // バックライト輝度(暗0-255明)
  lcd.setFont(&fonts::efont);     // フォントセット
  lcd.setTextWrap(false, false);  // 自動改行(横,縦) スクロール時効かないみたい。
  // 第1引数がtrueなら、右端到達後に左端へ移動
  // 第2引数がtrueなら、下端到達後に上端へ移動 (省略時 false)
  lcd.setTextScroll(true);        // 画面下端に到達後スクロール
  lcd.setScrollRect(0, 0, lcd.width(), lcd.height());
  //スクロール範囲(X,Y,W,H,スクロール後の色(省略時:変更なし)) 未指定:画面全体
  lcd.setCursor(0, 0);            // 画面左上
}

void loop() {
  lcd.setTextSize(s);                  // 文字サイズ(横縦幅倍数)
  lcd.setTextColor(random(0x000F, 0xFFFF), TFT_BLACK); // (文字色(紺~白),背景色)
  lcd.println("こんにちは、私です。");     // 文字表示
  s = s + 0.02; if (s > 2.0) s = 1.0;  // 文字サイズ変更(1~2)
}
* フラッシュメモリの190,764B(37%)を使用。