
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° 后横向显示,每秒刷新一次屏幕。加速度计和陀螺仪数据分别排列在左右两列。
PaperMono IMU 部分使用了 M5Unified 库中的 Imu_Class,更多相关的API可以参考下方文档: