本篇讲述开发板IMU传感器读数据并显示。
一.硬件原理
开发板使用了博世(Bosch) BMI270 超低功耗智能惯性测量单元(IMU),具有16位三轴加速度计+16位三轴陀螺仪。硬件电路原理图如下:

二.代码准备
这里主要实现循环获取IMU数据,并设计显示屏背景色与字体色,将六轴传感器数据显示出来。

代码如下
#include <M5Unified.h>
#include <M5GFX.h>
m5::imu_data_t imuData;
void setup() {
M5.begin();
M5.Display.setRotation(3);
M5.Display.setTextDatum(top_center);
M5.Display.setFont(&fonts::FreeMonoBold24pt7b);
M5.Display.clear(SILVER); // 背景设为银色
M5.Display.setTextColor(RED); // 字体颜色设为红色
M5.Display.drawString("IMU Realtime Data", M5.Display.width() / 2, 30);
}
void loop() {
M5.Imu.update();
imuData = M5.Imu.getImuData();
M5.Display.clear(SILVER); // 背景设为银色
M5.Display.setTextDatum(top_center);
M5.Display.setTextColor(RED); // 字体颜色设为红色
M5.Display.drawString("IMU Realtime Data", M5.Display.width() / 2, 50);
M5.Display.setTextColor(MAGENTA); // 确保字体颜色为红色
M5.Display.setCursor(M5.Display.width() / 3, M5.Display.height() *2/ 8);
M5.Display.printf(" Acc X = %6.2f \n", imuData.accel.x);
M5.Display.setCursor(M5.Display.width() / 3, M5.Display.height() *3/ 8);
M5.Display.printf(" Acc Y = %6.2f \n", imuData.accel.y);
M5.Display.setCursor(M5.Display.width() / 3, M5.Display.height() *4/ 8);
M5.Display.printf(" Acc Z = %6.2f \n\n", imuData.accel.z);
M5.Display.setCursor(M5.Display.width() / 3, M5.Display.height() *5/ 8);
M5.Display.printf(" Gyr X = %6.2f \n", imuData.gyro.x);
M5.Display.setCursor(M5.Display.width() / 3, M5.Display.height() *6/ 8);
M5.Display.printf(" Gyr Y = %6.2f \n", imuData.gyro.y);
M5.Display.setCursor(M5.Display.width() / 3, M5.Display.height() *7/ 8);
M5.Display.printf(" Gyr Z = %6.2f \n", imuData.gyro.z);
delay(1000);
}三.调试测验
编译烧录后,界面显示如下,可以看到IMU 六轴传感器数据随着角度与晃动相应变化。

我要赚赏金
