arduino mpu6050
时间: 2025-06-07 17:45:30 浏览: 14
### Arduino 实现 MPU6050 数据监测
以下是一个完整的代码示例,用于在 Arduino 平台上实现 MPU6050 传感器的数据监测。该代码能够读取加速度计和陀螺仪的数据,并通过串口输出。
```cpp
#include <Wire.h>
#include <Adafruit_MPU6050.h>
Adafruit_MPU6050 mpu;
void setup() {
Serial.begin(9600); // 初始化串口通信
if (!mpu.begin()) { // 检查是否成功初始化 MPU6050
Serial.println("MPU6050传感器未找到!");
while (1); // 如果未找到传感器,则停止程序运行
}
mpu.setAccelerometerRange(MPU6050_RANGE_8_G); // 设置加速度计范围为 ±8g
mpu.setGyroRange(MPU6050_RANGE_250_DEG); // 设置陀螺仪范围为 ±250°/s
Serial.println("MPU6050传感器准备完毕");
}
void loop() {
sensors_event_t a, g, temp; // 定义事件变量以存储加速度计、陀螺仪和温度数据
mpu.getEvent(&a, &g, &temp); // 读取传感器数据
// 打印加速度计数据
Serial.print("加速度 X: "); Serial.print(a.acceleration.x); Serial.print(" m/s^2 ");
Serial.print(" Y: "); Serial.print(a.acceleration.y); Serial.print(" m/s^2 ");
Serial.print(" Z: "); Serial.println(a.acceleration.z); Serial.println(" m/s^2 ");
// 打印陀螺仪数据
Serial.print("陀螺仪 X: "); Serial.print(g.gyro.x); Serial.print(" °/s ");
Serial.print(" Y: "); Serial.print(g.gyro.y); Serial.print(" °/s ");
Serial.print(" Z: "); Serial.println(g.gyro.z); Serial.println(" °/s ");
delay(500); // 每隔 500 毫秒读取一次数据
}
```
上述代码实现了 MPU6050 的基本功能,包括初始化和数据读取[^2]。通过 `mpu.getEvent()` 函数获取加速度计和陀螺仪的实时数据,并将结果通过串口打印出来以便调试或进一步处理。
### 计算俯仰角和滚动角
如果需要计算物体的姿态角度(如俯仰角和滚动角),可以使用以下代码片段:
```cpp
void loop() {
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
// 计算俯仰角(pitch)和滚动角(roll)
float pitch = atan2(a.acceleration.y, sqrt(pow(a.acceleration.x, 2) + pow(a.acceleration.z, 2))) * RAD_TO_DEG;
float roll = atan2(-a.acceleration.x, a.acceleration.z) * RAD_TO_DEG;
// 打印角度数据
Serial.print("Pitch: "); Serial.println(pitch);
Serial.print("Roll: "); Serial.println(roll);
delay(200); // 每隔 200 毫秒计算一次角度
}
```
此代码片段展示了如何根据加速度计数据计算俯仰角和滚动角[^4]。`RAD_TO_DEG` 是一个常量,用于将弧度值转换为角度值。
### 注意事项
- 确保在 Arduino IDE 中安装了 `Adafruit_MPU6050` 库[^2]。
- MPU6050 需要通过 I2C 接口连接到 Arduino,具体接线方式请参考相关文档。
- 如果需要更精确的角度测量,可以结合陀螺仪数据使用互补滤波器或卡尔曼滤波器[^5]。
阅读全文
相关推荐
















