Seeed K.K.の松岡です。
ディスプレイに文字を表示する(その1) @WioTerminalの続きです。
最後に「文字が小さくて見にくいので、、、次回、文字サイズとフォントを変更したいと思います。」と予告していたので、予告通り今回は文字サイズとフォントを変更してみましょう。
「Wio Terminal」を大きく表示したい
前回のサンプルスケッチは、上部と左部に数字(目盛)と、中央に「Wio Terminal」の文字、右下にカウントアップする数字を表示していました。
中央の「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); | |
tft.setTextFont(2); | |
tft.setTextFont(4); |
数値の表示も、やってみましょう。
さきほどのスケッチの一部を、このとおり書き換えます。
... tft.drawString("758", tft.width() / 2, tft.height() / 2); ...
コード | 画面 |
---|---|
tft.setTextFont(1); | |
tft.setTextFont(2); | |
tft.setTextFont(4); | |
tft.setTextFont(6); | |
tft.setTextFont(7); | |
tft.setTextFont(8); |
予告
次回はフリーフォントを使いたいと思います。
おまけ
「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);
変更履歴
日付 | 変更者 | 変更内容 |
---|---|---|
2020/8/19 | 松岡 | 作成 |