ディスプレイに文字を表示する(その2) @WioTerminal

Seeed K.K.の松岡です。
ディスプレイに文字を表示する(その1) @WioTerminalの続きです。
最後に「文字が小さくて見にくいので、、、次回、文字サイズとフォントを変更したいと思います。」と予告していたので、予告通り今回は文字サイズとフォントを変更してみましょう。

「Wio Terminal」を大きく表示したい

前回のサンプルスケッチは、上部と左部に数字(目盛)と、中央に「Wio Terminal」の文字、右下にカウントアップする数字を表示していました。

f:id:matsujirushix:20200818171923p:plain

中央の「Wio Terminal」の文字、小さくてちょっとさみしい。
もう少し大きく表示したいですよね?

残念ながら、Wio TerminalのArduino開発プラットフォームに含まれているSeeed_Arduino_LCDライブラリには、setFontSize()とかchangeCharScale()のような文字の大きさを変更するメソッドはありません。
じゃあどうするのか?というと、、、文字のサイズが大きなフォントに変更することで、文字を大きく表示することができます。

テキストフォントとフリーフォント

フォントは、setTextFont()setFreeFont()で変更します。左をテキストフォント、右をフリーフォントと呼ぶことにしましょう。

テキストフォントは、あらかじめ用意されたフォントを数字で指定して切り替えます。どの数字を指定すると、どんなフォントになるかはドキュメントに、、、書いていないようですね(汗)。探してみましたが見つかりませんでした。

一方、フリーフォントは、フォントを変数で用意して、この変数を指定して切り替えます。あらかじめいくつかのフォントがSeeed_Arduino_LCDライブラリに入っているので、これらを使うこともできます。フリーフォントについてはWikiに少し説明がありました。

テキストフォントを指定

では、テキストフォントを指定してみましょう。
(細かな点は置いておいて)テキストフォントで具体的に指定可能な数字は1,2,4,6,7,8です。それぞれの数字で、文字の大きさや、表示できる文字が決まります。
1,2,4は英数字記号を表示するテキストフォントで、1→2→4の順に文字が大きくなります。
6,7,8は数値や時刻をメチャ大きく表示するテキストフォントです。6は午前/午後を示す「am」「pm」が表示できるように、'a', 'p', 'm'も含まれています。7は7セグメントLEDっぽいフォントなので、時刻を表示するときはこれを使うのが良いかもしれません。

テキストフォント 名称 大きさ[ピクセル] 文字 文字数
1 英数字記号(8ビット) 7 x 5 0x00~0xff 255
2 英数字記号(7ビット) 16 x 3~10 0x20~0x7f 96
4 英数字記号(7ビット) 26 x 1~25 0x20~0x7f 96
6 数値/時刻 + am/pm 48 x 7~42 [スペース] 0 1 2 3 4 5 6 7 8 9 : - . a p m 17
7 数値/時刻(7セグメントLED風) 48 x 12~32 [スペース] 0 1 2 3 4 5 6 7 8 9 : - . 14
8 数値/時刻 75 x 29~55 [スペース] 0 1 2 3 4 5 6 7 8 9 0 : - . 14

「Wio Terminal」を表示するスケッチはこちらです。
/* テキストフォント */をテキストフォントの数字に書き換えて実行すればOKです。

#include <TFT_eSPI.h>

static TFT_eSPI tft;

void setup() {
  tft.begin();
  tft.setRotation(3);
  tft.fillScreen(TFT_BLACK);

  tft.setTextFont(/* テキストフォント */);
  tft.setTextColor(TFT_DARKGREEN, TFT_BLACK);
  tft.setTextDatum(MC_DATUM);
  tft.drawString("Wio Terminal", tft.width() / 2, tft.height() / 2);
}

void loop() {
}
コード 画面
tft.setTextFont(1); f:id:matsujirushix:20200818180916p:plain:w300
tft.setTextFont(2); f:id:matsujirushix:20200818180934p:plain:w300
tft.setTextFont(4); f:id:matsujirushix:20200818180948p:plain:w300

数値の表示も、やってみましょう。
さきほどのスケッチの一部を、このとおり書き換えます。

  ...
  tft.drawString("758", tft.width() / 2, tft.height() / 2);
  ...
コード 画面
tft.setTextFont(1); f:id:matsujirushix:20200818181438p:plain:w300
tft.setTextFont(2); f:id:matsujirushix:20200818181508p:plain:w300
tft.setTextFont(4); f:id:matsujirushix:20200818181523p:plain:w300
tft.setTextFont(6); f:id:matsujirushix:20200818181540p:plain:w300
tft.setTextFont(7); f:id:matsujirushix:20200818181558p:plain:w300
tft.setTextFont(8); f:id:matsujirushix:20200818181613p:plain:w300

予告

次回はフリーフォントを使いたいと思います。

おまけ

「Wio Terminal」をテキストフォント6で表示した結果。

  tft.setTextFont(6);
  tft.setTextColor(TFT_DARKGREEN, TFT_BLACK);
  tft.setTextDatum(MC_DATUM);
  tft.drawString("Wio Terminal", tft.width() / 2, tft.height() / 2);

f:id:matsujirushix:20200818181005p:plain:w300

変更履歴

日付 変更者 変更内容
2020/8/19 松岡 作成