01.M5UnifiedでHelloWorld


01.M5UnifiedでHelloWorld

M5Stackシリーズの統一ライブラリM5Unifiedで、色々な機種に"HelloWorld"を表示しました。

M5Unified

今までは、製品ごとにライブラリやAPIが別々でした。しかし、M5Unifiedライブラリを使うと、1つのスケッチで異なるM5Stackシリーズ(M5StackとM5Atom等)を動かすことが可能になります。ESP32のM5StackやESP-IDFに使用できます。

対応機種

M5Stack Core (BASIC / GRAY / GO / FIRE)
M5Stack Core2 / Core2 v1.1 / Tough
M5Stack CoreS3
M5Stick C / CPlus / CPlus2
M5Paper
M5Stack CoreInk
M5ATOM Lite / Matrix / ECHO / PSRAM / U
M5ATOMS3 / S3Lite / S3U
M5STAMP PICO
M5STAMPC3 / C3U
M5STAMPS3
等あります。

M5Unifiedライブラリの始め方
https://docs.m5stack.com/ja/arduino/m5unified/helloworld

M5Unifiedのサンプル例
https://github.com/m5stack/M5Unified/tree/master/examples

M5Unified用API

・Button Class
・Power Class
・IMU Class
・Touch Class
・Speaker Class ・Mic Class
・RTC8563(RTC) Class

https://docs.m5stack.com/ja/arduino/m5unified/m5unified_appendix

M5GFX

LovyanGFXを元にM5Stack公式ライブラリとしてM5GFXが作成され、各種ボードの制御コードが追加されたものがM5Unifiedとなります。
https://lang-ship.com/blog/work/m5unified-1/ より

M5Unifiedライブラリは内部でM5GFXライブラリを使用しています。
https://qiita.com/villhell/items/84cb8d53fe13226bdd97 より

日本語はM5GFXを使用します。
対応デバイス: M5Stack Core(Basic, Gray, Fire, M5Go), M5StackCore2, M5Tough, M5StickC, M5StickCPlus, M5CoreInk, M5Paper
https://docs.m5stack.com/ja/arduino/m5gfx/m5gfx

M5Unifiedのライブラリをインストール

https://docs.m5stack.com/ja/arduino/m5unified/helloworld

Arduino-IDE > スケッチ > ライブラリをインクルード > ライブラリを管理... > "M5Unified"で検索 > "M5Unified by M5Stack 0.1.16" > インストール > "全てをインストール"

同一スケッチで動作しました。
・M5Stack Basic 画面:320x240 Flash:?MB SRAM:520kB
・CoreInk 画面:200x200 Flash:4MB SRAM:520kB
・M5StickCPlus 画面:240x135 Flash:4MB SRAM:520kB
・ATOMS3 画面:128x128 Flash:8MB SRAM:?kB

以下は動作しませんでした。
・T-Watch_2020
・Wio Terminal

スケッチ


// HelloWorld.ino
#include <M5Unified.h>  // M5Unifiedライブラリを使用
uint32_t count;         // 表示用count変数

void setup() {
  auto cfg = M5.config();         // M5設定用の構造体を代入
  M5.begin(cfg);                  // M5本体の初期化
  M5.Lcd.setTextSize(2);          // テキストサイズ(倍)
  M5.Lcd.println("HelloWorld");  // 画面に表示
  Serial.println("HelloWorld");  // シリアルモニターに表示
  count = 0;                      // countを初期化
}
void loop() {
  M5.Lcd.printf("COUNT: %d\n", count);  // countを画面表示
  Serial.printf("COUNT: %d\n", count);  // countをシリアル表示
  count++;                              // countを1加算
  delay(1000);                          // 1秒待つ
}
* M5StickCPlusの時、flash memory(3.1Mbyte)のうち、スケッチが13%使用。RAM(328kbyte)のうち、global変数が7%使用、local変数で303kbyte使用可能。(1000byte=1kbyteで計算)