<aside> 🚨
Arduino IDE、M5Core2ライブラリを授業で取り扱わない流れのため、見たい人だけ見てください
</aside>
M5StackはM5Stack社が提供するESP32ベースのモジュール型開発プラットフォーム
多くの拡張ボードやモジュールが用意されている
様々なシリーズがある




本授業ではM5Stack Core2を使用する

https://www.switch-science.com/products/6530
公式ドキュメント, GitHub, 他Webサイト, 下に記載されている例を参考に作ってみよう!
https://docs.m5stack.com/en/arduino/arduino_ide
https://github.com/m5stack/M5Core2
https://knt60345blog.com/m5stack_api_list/
https://lang-ship.com/blog/work/m5stickc-i2c/
https://qiita.com/ryouta_horiuchi/items/ff31253c59f7006f7937
https://qiita.com/Syake0_/items/8367a4f35893b69076b7
https://zenn.dev/ijiwarunahello/articles/3cad5ead2162c6
#include <M5Unified.h>
void setup() {
auto cfg = M5.config():
;
M5.begin(cfg);
}
void loop() {
M5.Lcd.print("Hello World");
}
キーワード
#include <M5Core2.h>: ライブラリのインクルードM5.begin();: M5Stack Core2の初期化#include <M5Core2.h>
void setup() {
M5.begin();
}
void loop() {
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setCursor(0, 0);
for (int i = 0; i < 10; i++) {
M5.Lcd.print("Hello ");
M5.Lcd.println("World");
delay(100);
}
delay(100);
}
キーワード
M5.Lcd: ディスプレイを操作する時に使用するM5.Lcd.fillScreen(BLACK);: 背景色を黒にする
M5.Lcd.setCursor(0, 0): ディスプレイを描画位置を(0, 0)にする
M5.Lcd.print("Hello ");: ディスプレイに「Hello 」を描画するM5.Lcd.println("World");: ディスプレイに「World」を描画して改行する#include <M5Core2.h>
void setup() {
M5.begin();
}
void loop() {
M5.update();
if (M5.BtnA.wasPressed()) {
M5.Lcd.print("A");
}
if (M5.BtnB.wasPressed()) {
M5.Lcd.print("B");
}
if (M5.BtnC.wasPressed()) {
M5.Lcd.print("C");
}
}
キーワード
M5.update();: ボタンのA, B, Cの読み取り状態を更新するM5.BtnA.wasPressed();: ボタンA(左のボタン)が押された時に1を返すM5.BtnB.wasPressed();: ボタンB(中央のボタン)が押された時に1を返すM5.BtnC.wasPressed();: ボタンC(右のボタン)が押された時に1を返す#include <M5Core2.h>
float accX = 0.0F;
float accY = 0.0F;
float accZ = 0.0F;
float gyroX = 0.0F;
float gyroY = 0.0F;
float gyroZ = 0.0F;
void setup() {
M5.begin();
M5.IMU.Init();
}
void loop() {
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setCursor(0, 0);
M5.IMU.getAccelData(&accX, &accY, &accZ);
M5.IMU.getGyroData(&gyroX, &gyroY, &gyroZ);
M5.Lcd.printf("accel: %f, %f, %f\\n", accX, accY, accZ);
M5.Lcd.printf("gyro: %f, %f, %f\\n", gyroX, gyroY, gyroZ);
delay(1000);
}
キーワード
M5.IMU.Init();: IMUを初期化するM5.IMU.getAccelData(&accX, &accY, &accZ);: 各方向の加速度を取得する
M5.IMU.getGyroData(&gyroX, &gyroY, &gyroZ);: 各方向の角速度を取得する