本記事について
M5Stackの開発手法は Arduino や UIFlow, PlatformIO等複数ある。
2023/06時点でM5AtomS3の体系的な本はなく、どうやって始めるべきか分からなかった。
とりあえずHelloWorldしたいと思い、
Visual Studio Codeを用いたM5Unifiedの導入方法
をやってみたところ、以下の図のようにHelloWorldすることができた。
多少戸惑うところもあったため、手順ごとに実践したメモを残す。
環境・準備するもの
MacBook Air M2
macOS 13.3
AtomS3
mac と Atom を繋げるための type C ケーブル
VSCode (記事のVSCodeのインストールは省略)
PlatformIO のインストール
参照記事の通りだが、インストールに5分程度かかった気がする(うろ覚え)
プロジェクト作成〜ビルド
プロジェクト作成
参照記事通り
プロジェクトウィザードへの入力
Use default locationのはてなマークは見ておいた方がいい。
デフォルトでは以下のパスに入力した Name でプロジェクトが作られる。
~/Documents/PlatformIO/Projects
Frameworkは最初何も選択できない。しかし、Board で AtomS3 を選択すると Framework から Arduino を選択できるようになる。
事前に Arduino IDE インストールしなくてもいいのかな?と思っていたが必要なかった。
で、Finish を押すとプロジェクトが作られるのだが、5分程度かかった。
(初回だったから何かインストールしてたのかもしれない)
途中で VSCode クリックしたら進行中が消えて何の表示もされなかった。
プロジェクトフォルダは作られていたため、そのフォルダに移動して VSCode を開き直した。
開く時も5分くらいかかった。(ここも何かインストールしてたような感じがある)
VSCodeの出力は以下のようになっていて、一番上の
Resolving m5stack-atoms3 dependencies...
に時間がかかった。
Resolving m5stack-atoms3 dependencies...
Already up-to-date.
Updating metadata for the vscode IDE...
Project has been successfully updated!
待てば終わるので放置をすること。
ライブラリをプロジェクトに追加する
参照記事通り。ライブラリのインストールはわりとすぐ終わったと思う
プログラムをビルドする
当たり前といえばそうだが、書き込む前に AtomS3 に type C ケーブルで mac と AtomS3 を接続する必要がある。
繋ぐと、 AtomS3 の画面に 「Wi-fi 接続するためにタッチしてね(うろ覚え)」のようなメッセージが表示されるが無視する。
ビルド・書き込みはすぐおわる。
AtomS3 の画面が小さいため 「Hello World!」ではなく「Hello W」になっているのが趣がある。
Serialの確認
PlatformIO の Serial Monitor でデータが送られてくることが確認できなかった。
USBSerialを使用したらできた。
#include <M5Unified.h> // M5Unifiedライブラリをプログラムで使用可能にします。
// グローバル変数(プログラム全体で使用する変数の定義をします。)
uint32_t count;
// setup関数は起動時に一度だけ実行されます。
// 主に初期化処理を記述します。
void setup() {
auto cfg = M5.config(); // M5Stack初期設定用の構造体を代入
// configを設定する場合はここで設定
// 例
// cfg.external_spk = true;
M5.begin(cfg); // M5デバイスの初期化
USBSerial.begin(115200); // シリアルモニターの初期化
M5.Display.setTextSize(3); // テキストサイズを変更
M5.Display.print("Hello World!!"); // 画面にHello World!!と1行表示
USBSerial.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を画面に表示
USBSerial.printf("COUNT: %d\n", count); // countをシリアルに表示
count++; // countを1増やす
delay(1000); // 1秒待つ
}
参考