2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

M5Unified の HelloWorld! のプラグラムをざっくり理解する

Posted at

本記事について

M5Unifiedライブラリの始め方のプラグラムが実行できたので、次はこのプラグラムを理解する。

前提

M5AtomS3でHello World! with mac

該当のコード

長くはないため全部貼る

main.cpp
#include <M5Unified.h> // M5Unifiedライブラリをプログラムで使用可能にします。

// グローバル変数(プログラム全体で使用する変数の定義をします。)
uint32_t count;


// setup関数は起動時に一度だけ実行されます。
// 主に初期化処理を記述します。
void setup() {

  auto cfg = M5.config();       // M5Stack初期設定用の構造体を代入
  // configを設定する場合はここで設定
  // 例
  // cfg.external_spk = true;

  M5.begin(cfg);                           // M5デバイスの初期化

  M5.Display.setTextSize(3);               // テキストサイズを変更
  M5.Display.print("Hello World!!");       // 画面にHello World!!と1行表示
  Serial.println("Hello World!!");         // シリアルモニターにHello World!!と1行表示
  count = 0;                               // countを初期化

}

// loop関数は起動している間ずっと繰り返し実行されます。
// センサーから値を取得したり、画面を書き換える動作等をおこないます。
void loop() {

  M5.Display.setCursor(0, 20);              // 文字の描画座標(カーソル位置)を設定
  M5.Display.printf("COUNT: %d\n", count);  // countを画面に表示
  Serial.printf("COUNT: %d\n", count);      // countをシリアルに表示
  count++;                                  // countを1増やす
  delay(1000);                              // 1秒待つ

}

これを読んで以下の疑問が浮かんだ。

  • config, begin って何?
  • M5.Displayって何?
  • setTextSizeの3って何?
  • Hello World!を画面に収めるにはどうすればいい?

これらを一つずつ調べていく。

config, begin って何?

これに関してはM5Unifiedへの移植のポイントに書いてあった。

configのドキュメントはここ

定義ジャンプでサクッと見れるためコード直で見るのもいいと思う

begin が具体的に何をやってるかは調べてないけど、config は begin のためのパラメータであることは理解した。

M5.Displayって何?

begin と同じく M5Unifiedへの移植のポイントの「画面描画について」の項目に書いてある。

画面付きのデバイスではM5.DisplayでM5GFXのAPIを使用することができます。定義は必要ありません。

M5.Display は M5GFX そのもの

M5Unified.hpp
M5GFX &Display = _primaryDisplay;

左側にリンクがある

スクリーンショット_2023-06-23_22_38_35.png

setTextSizeの3って何?

ドキュメントには単位は書いてなかった。(2023/06時点)
まぁ大体わかればいいだろうということで実験してみた。

size 1,2,3でそれぞれ ATOM S3 の画面に出してみた。

main.cpp
#include <M5Unified.h>

void setup()
{
  auto cfg = M5.config();
  M5.begin(cfg);
  USBSerial.begin(115200);

  M5.Display.setTextSize(1);
  M5.Display.print("aaaaaaaaaa");
  M5.Display.setCursor(0, 20);

  M5.Display.setTextSize(2);
  M5.Display.print("aaaaaaaaaa");
  M5.Display.setCursor(0, 40);

  M5.Display.setTextSize(3);
  M5.Display.print("aaaaaaaaaa");
}

void loop()
{
}

結果が以下。

IMG_5443.JPG

デフォルトのフォント等の設定の場合、ATOM S3 では

TextSize 1 : a が10個で半分くらい
TextSize 2 : a が10個でほぼ右端。これ以上入らなそう
TextSize 3 : a が7個分入る

Hello World!を画面に収めるにはどうすればいい?

main.cpp
#include <M5Unified.h>

void setup()
{
  auto cfg = M5.config();
  M5.begin(cfg);
  USBSerial.begin(115200);

  M5.Display.setTextSize(1);
  M5.Display.print("Hello World!");
  M5.Display.setCursor(0, 20);

  M5.Display.setTextSize(1.5);
  M5.Display.print("Hello World!");
  M5.Display.setCursor(0, 40);

  M5.Display.setTextSize(2);
  M5.Display.print("Hello World!");
}

void loop()
{
}

IMG_5444.JPG

TextSize 2 だと入らない。 1.5 なら入ることがわかった。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?