
Arduino入門
PaperMono IMU に関する API とサンプルプログラムです。
M5PaperMono#include <M5Unified.h>
M5Canvas canvas(&M5.Display);
void drawImu(const m5::imu_data_t& data)
{
const int w = M5.Display.width();
const int leftX = w / 4;
const int rightX = w * 3 / 4;
canvas.fillSprite(TFT_WHITE);
canvas.setTextDatum(middle_center);
canvas.setFont(&fonts::FreeSansBold24pt7b);
canvas.setTextColor(TFT_BLACK);
canvas.drawString("PaperMono IMU Test", w / 2, 42);
canvas.setFont(&fonts::FreeSansBold18pt7b);
canvas.drawString("ACCELERATION", leftX, 112);
canvas.drawString("GYROSCOPE", rightX, 112);
canvas.drawString(String("X: ") + String(data.accel.x, 2), leftX, 182);
canvas.drawString(String("Y: ") + String(data.accel.y, 2), leftX, 242);
canvas.drawString(String("Z: ") + String(data.accel.z, 2), leftX, 302);
canvas.drawString(String("X: ") + String(data.gyro.x, 2), rightX, 182);
canvas.drawString(String("Y: ") + String(data.gyro.y, 2), rightX, 242);
canvas.drawString(String("Z: ") + String(data.gyro.z, 2), rightX, 302);
canvas.pushSprite(0, 0);
}
void setup()
{
auto cfg = M5.config();
cfg.clear_display = false;
M5.begin(cfg);
M5.Display.setRotation(1);
M5.Display.setEpdMode(epd_mode_t::epd_text);
canvas.createSprite(M5.Display.width(), M5.Display.height());
}
void loop()
{
M5.update();
M5.Imu.update();
const auto data = M5.Imu.getImuData();
drawImu(data);
delay(1000);
}このプログラムは画面を 90 度回転して横向きに表示し、1 秒ごとに更新します。加速度センサーとジャイロスコープのデータは、それぞれ左右の列に表示されます。
PaperMono の IMU 機能では、M5Unified ライブラリの Imu_Class を使用します。詳細については、以下のドキュメントを参照してください。