MPU6050 和 arduino 测试

运行  MPU6050-tockn 的 getAllData 程序 , 可以获得下面的数据

acc3轴              ----原始数据
gyro3轴             ----原始数据

accAngle2轴     ---推演数据

           accAngleX ,accAngleY  ,accAngleZ(沿Z轴转动数据不变,因此数据为空 )
gyroAngle3轴    ----推演数据

angle3轴            ----最终数据

数据间的关系是

                          ----原始数据----推演数据----最终数据  ?????????????

-------------------------------------------------------------------------------------

初始位置读数

accX : -0.01    accY : 0.06    accZ : 1.10
gyroX : -2.29    gyroY : -1.57    gyroZ : -4.78

accAngleX : 3.25    accAngleY : 0.31
gyroAngleX : -226.51    gyroAngleY : -141.27    gyroAngleZ : -453.26

angleX : 3.00    angleY : 0.21    angleZ : -453.26

--------------------------------------------------------------------------------------

x轴旋转90度 位置读数
accX : -0.03    accY : 1.00    accZ : 0.14
gyroX : -2.79    gyroY : -1.28    gyroZ : -4.52

accAngleX : 80.35    accAngleY : 1.45
gyroAngleX : -232.49    gyroAngleY : -208.42    gyroAngleZ : -642.36

angleX : 79.72    angleY : 1.05    angleZ : -642.36

-------------------------------------------------------------------------------------


#include <MPU6050_tockn.h>
#include <Wire.h>

MPU6050 mpu6050(Wire);

long timer = 0;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  mpu6050.begin();
  mpu6050.calcGyroOffsets(true);
}

void loop() {
  mpu6050.update();

  if(millis() - timer > 1000){
    
    Serial.print("temp : ");Serial.println(mpu6050.getTemp());
    Serial.print("accX : ");Serial.print(mpu6050.getAccX());
    Serial.print("\taccY : ");Serial.print(mpu6050.getAccY());
    Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ());
  
    Serial.print("gyroX : ");Serial.print(mpu6050.getGyroX());
    Serial.print("\tgyroY : ");Serial.print(mpu6050.getGyroY());
    Serial.print("\tgyroZ : ");Serial.println(mpu6050.getGyroZ());
  
    Serial.print("accAngleX : ");Serial.print(mpu6050.getAccAngleX());
    Serial.print("\taccAngleY : ");Serial.println(mpu6050.getAccAngleY());
  
    Serial.print("gyroAngleX : ");Serial.print(mpu6050.getGyroAngleX());
    Serial.print("\tgyroAngleY : ");Serial.print(mpu6050.getGyroAngleY());
    Serial.print("\tgyroAngleZ : ");Serial.println(mpu6050.getGyroAngleZ());
    
    Serial.print("angleX : ");Serial.print(mpu6050.getAngleX());
    Serial.print("\tangleY : ");Serial.print(mpu6050.getAngleY());
    Serial.print("\tangleZ : ");Serial.println(mpu6050.getAngleZ());


    timer = millis();
    
  }

}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
对于MPU6050这款传感器,通常使用的是I2C协议进行通信。要使用MPU6050,可以使用Arduino或者其他开发板进行连接和编程。 在Arduino中,可以使用Wire库来进行I2C通信。而对于MPU6050来说,有一些非官方的标准库可供使用。其中较为常用的是Jeff Rowberg开发的 MPU6050库,它提供了一些方便的函数和方法来与MPU6050进行交互。 你可以在Arduino库管理器中搜索 "MPU6050" ,找到并安装 Jeff Rowberg 开发的 MPU6050 库。安装完成后,就可以在Arduino代码中引用该库,并使用其中的函数和方法来读取和控制MPU6050了。 以下是一个示例代码,展示了如何使用 MPU6050 库来读取传感器数据: ```cpp #include <Wire.h> #include <MPU6050.h> MPU6050 mpu; void setup() { Wire.begin(); mpu.initialize(); Serial.begin(9600); // 打印传感器信息 Serial.println("MPU6050测试开始"); Serial.println("=============================="); // 测试连接 Serial.print("连接测试结果:"); Serial.println(mpu.testConnection() ? "成功" : "失败"); Serial.println("=============================="); } void loop() { // 读取加速度和角速度 int16_t ax, ay, az; int16_t gx, gy, gz; mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // 打印数据 Serial.print("加速度 (mg): "); Serial.print(ax); Serial.print(", "); Serial.print(ay); Serial.print(", "); Serial.println(az); Serial.print("角速度 (°/s): "); Serial.print(gx); Serial.print(", "); Serial.print(gy); Serial.print(", "); Serial.println(gz); delay(100); } ``` 这段代码使用MPU6050库初始化传感器,并在循环中读取并打印加速度和角速度的值。你可以根据自己的需求进行修改和扩展。 希望能帮到你!如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值