教程七 IMU数据读取例程
来自Waveshare Wiki
各模块使用教程
- 序章 安装Arduino IDE
- 教程一 带编码器电机控制例程一
- 教程二 带编码器电机控制例程二
- 教程三 带编码器电机控制例程三
- 教程四 无编码器电机控制例程
- 教程五 ST3215总线舵机控制例程
- 教程六 PWM舵机控制例程
- 教程七 IMU数据读取例程
- 教程八 SD卡读取例程
- 教程九 INA219电压电流监测例程
- 教程十 OLED屏幕控制例程
- 教程十一 激光雷达和在ROS2中发布雷达话题
- General Driver for Robots 主页
IMU数据读取
General Driver for Robots板载9轴IMU,可读取驱动板自身位置数据,以下提供IMU数据读取程序。
例程
上传程序
下载压缩包后打开9DOF_Demo.ino,用USB线将多功能驱动板和计算机连接起来(此处插入的是多功能驱动板USB的Type-C接口),点击“工具”→“端口”,再点击新出现的COM(我这里新出现的COM为COM26)。
在Arduino IDE中,点击“工具”→“开发板”→“ESP32”→“ESP32 Dev Module”。开发板以及端口都选择好后上传程序。上传程序后,再打开Arduino IDE的串口监视器即可读取IMU数据,转动驱动板时数据会改变。
程序解析
#include"IMU.h" //设置Roll、Pitch、Yaw三个角的值,以及Temp温度的值 //Roll表示的是绕X轴旋转的横滚角度,Pitch表示的是绕Y轴旋转的俯仰角度,Yaw表示的是绕Z轴旋转的偏航角度 int IMU_Roll = 100; int IMU_Pitch = 100; int IMU_Yaw = 100; int IMU_Temp = 100; IMU_ST_ANGLES_DATA stAngles; //创建结构体变量stAngles,用于存储三个角度数据 IMU_ST_SENSOR_DATA stGyroRawData; //用于存储陀螺仪原始数据 IMU_ST_SENSOR_DATA stAccelRawData; //存储加速度计原始数据 IMU_ST_SENSOR_DATA stMagnRawData; //存储磁力计原始数据 void getIMU(){ //获取IMU数据 imuDataGet( &stAngles, &stGyroRawData, &stAccelRawData, &stMagnRawData); IMU_Temp = QMI8658_readTemp(); IMU_Roll = stAngles.fRoll; IMU_Pitch = stAngles.fPitch; IMU_Yaw = stAngles.fYaw; } void DOF(){ Serial.print("R:"); Serial.println(IMU_Roll); Serial.print("P:"); Serial.println(IMU_Pitch); Serial.print("Y:"); Serial.println(IMU_Yaw); Serial.print("T:"); Serial.println(IMU_Temp); } void setup() { Serial.begin(115200); //初始化串口通信 while(!Serial){} //等待串口连接 imuInit(); //初始化IMU } void loop() { getIMU(); //获取IMU数据 DOF(); //输出IMU数据 delay(1000); }