環境構築 (PlatformIO) のHello Worldから
#include <Arduino.h>
#include <M5Unified.h>
#include <XXXX.h> は指定したファイルの内容をソースコードに差し込む命令 (ヘッダファイルの読み込みを行うプリプロセッサ命令)
このサンプルでは, Arduino.hというファイルと, M5Unified.hというファイルを展開している
Arduino.h はArduinoの関数を利用するための必須ライブラリM5Unified.h はM5Stackシリーズの共通ライブラリ<aside> 💡
プリプロセスはコンパイルする前の前処理のこと
# を使ったキーワードを見つけると, コンパイルす前に特定の処理を行ってから, コンパイラに結果を返す (#define , #undef , #if , #ifdef など)
#include <M5Unified.h> はプリプロセス時に, /.pio/libdeps/m5stack-core2/M5Unified/src/M5Unified.h の内容をmain.cppに差し込む
Arduino.hの実体は, おそらく.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h
</aside>
void setup() { // マイコンの起動時に1度だけ呼び出される関数
auto cfg = M5.config(); // 初期化オプションを取得する. M5Unifiedでは必須
M5.begin(cfg); // M5Stackの初期化. 引数として直前の初期化オプション(cfg)が必要
M5.Display.print("Hello World"); // M5Stackのディスプレイに文字列"Hello World"を出力する
}
void setup(){ 処理 } はマイコンの起動時に1度だけ呼び出される関数. 通常, マイコン, センサの初期化や, 無線通信のセットアップなどを行う
setup()内の処理はM5Stackの固有の処理である
auto cfg = M5.config(); はM5Stackの初期化オプションの取得を行う
cfg.internal_imu = false;cfg.external_display.module_display = true;auto は, 型推論のキーワード. コンパイラが変数の型を自動的に推論するM5.begin(cfg); はM5Stackの初期化を行う関数. 引数に先に取得した初期化オプションを取るM5.Display.print(”Hello World”); はM5Stackの内蔵ディスプレイに”Hello World”を出力する
<aside> 💡
M5は, M5Unifiedクラスのグローバルインスタンスであり, M5のメンバ変数に, Display, Imu, Btnなどの内蔵機能にアクセスするためのクラスが存在する
M5Unified/src/M5Unified.hpp の65行目以降を参照
</aside>