ShadowWalker 发表于 2013-7-26 12:52:29

用MPU6050的dmp得到的数据乱的一塌糊涂,求指导。

本帖最后由 ShadowWalker 于 2013-7-26 12:52 编辑

#include "Wire.h"
#include "I2Cdev.h"
#include "MPU6050_6Axis_MotionApps20.h"
MPU6050 mpu;

bool dmpReady = false;// set true if DMP init was successful
uint8_t mpuIntStatus;   // holds actual interrupt status byte from MPU
uint8_t devStatus;      // return status after each device operation (0 = success, !0 = error)
uint16_t packetSize;    // expected DMP packet size (default is 42 bytes)
uint16_t fifoCount;   // count of all bytes currently in FIFO
uint8_t fifoBuffer; // FIFO storage buffer

Quaternion q;         //          quaternion container
   
VectorFloat gravity;    //             gravity vector

float ypr;         //    yaw/pitch/roll container and gravity vector

void setup()
{
   
    Wire.begin();
    Serial.begin(115200);
    while (!Serial);               // wait for serial port to connect. Needed for Leonardo only
    mpu.initialize();
    devStatus = mpu.dmpInitialize();               //为0是成功
    mpu.setDMPEnabled(true);      
    packetSize = mpu.dmpGetFIFOPacketSize();      //默认42byte
   
}
void loop()
{
      fifoCount = mpu.getFIFOCount();
      while (fifoCount < packetSize)
      fifoCount = mpu.getFIFOCount();

      // read a packet from FIFO
      mpu.getFIFOBytes(fifoBuffer, packetSize);

      // track FIFO count here in case there is > 1 packet available
      // (this lets us immediately read more without waiting for an interrupt)
      fifoCount -= packetSize;

      mpu.dmpGetQuaternion(&q, fifoBuffer);
      mpu.dmpGetGravity(&gravity, &q);
      mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);

      Serial.println(ypr * 180/M_PI);
      // Serial.print(",");
      // Serial.print(ypr * 180/M_PI);
      // Serial.print(",");
      // Serial.println(ypr * 180/M_PI);                           
}

哪里错了,求各位指点。

学慧放弃 发表于 2013-7-26 20:03:48

那个DMP融合貌似我试过了官方的库一直无法运行,不过据说;论坛有人调试成功了,但是测试几乎无法通过....

goodboy3 发表于 2013-7-26 20:08:34

用了github上下载下来的库和范例程序,得到的数据都挺稳定的呀

ShadowWalker 发表于 2013-7-27 12:39:58

goodboy3 发表于 2013-7-26 20:08 static/image/common/back.gif
用了github上下载下来的库和范例程序,得到的数据都挺稳定的呀

在MPU6050_DMP6里面加delay(300)才能得到正确的数据,延时小于300得到的数据就如我帖子里的图一样,但1/0.3这样的频率也低得让人无法接受

goodboy3 发表于 2013-7-27 14:37:35

ShadowWalker 发表于 2013-7-27 12:39 static/image/common/back.gif
在MPU6050_DMP6里面加delay(300)才能得到正确的数据,延时小于300得到的数据就如我帖子里的图一样,但1 ...

我不加delay貌似也OK嘛 串口监视器显示的数据满稳定的如果模块不移动的话

darkorigin 发表于 2013-7-28 13:41:31

试试用现成的成品代码调试 来测试器件工作状况
比如用 MWC代码来测试下看看?

ShadowWalker 发表于 2013-7-30 10:30:50


在 Arduino forum发帖的收获,先贴给大家看看,我也好好研究一下。

lukefan2008 发表于 2013-7-30 12:38:19

goodboy3 发表于 2013-7-26 20:08 static/image/common/back.gif
用了github上下载下来的库和范例程序,得到的数据都挺稳定的呀

小菜一枚,求github链接

goodboy3 发表于 2013-8-1 08:31:26

lukefan2008 发表于 2013-7-30 12:38 static/image/common/back.gif
小菜一枚,求github链接

https://github.com/jrowberg/i2cdevlib

lukefan2008 发表于 2013-8-2 21:02:00

goodboy3 发表于 2013-8-1 08:31 static/image/common/back.gif
https://github.com/jrowberg/i2cdevlib

谢谢楼主,不甚感激

lukefan2008 发表于 2013-8-2 21:05:26

goodboy3 发表于 2013-8-1 08:31 static/image/common/back.gif
https://github.com/jrowberg/i2cdevlib

可是链接怎么打不开呢?

goodboy3 发表于 2013-8-5 14:03:10

lukefan2008 发表于 2013-8-2 21:05 static/image/common/back.gif
可是链接怎么打不开呢?

我好像可以打开,要不你换个时间段试试看,或者是找个代理翻墙

swortain 发表于 2014-2-26 11:29:52

ShadowWalker 发表于 2013-7-30 10:30 static/image/common/back.gif
在 Arduino forum发帖的收获,先贴给大家看看,我也好好研究一下。

英语不济。。。回复是说噪声比较大的话吧motinapp20.h这个文件里的01改成09么?上面是要做什么?

机智的小学生 发表于 2014-4-20 11:01:01

是不是要滤个波?

PInfinite 发表于 2015-4-21 09:37:50

同lz,碰到一样的问题

加了个300ms的延时,数据是稳定了,但三行里有两行都是overflow

话说楼主解决了没求指导
页: [1] 2
查看完整版本: 用MPU6050的dmp得到的数据乱的一塌糊涂,求指导。