极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16648|回复: 9

mpu6050算法分享

[复制链接]
发表于 2014-8-12 16:54:57 | 显示全部楼层 |阅读模式
买了一块mpu6050,是串口输出数据的,感觉还不错,所以把算法代码分享一下[pre lang="arduino" line="1" file="6050"]unsigned char Re_buf[11],counter=0;
unsigned char sign=0;
float a[3],w[3],angle[3],T;
void setup() {
  // initialize serial:
  Serial.begin(115200);
}

void loop() {
  if(sign)
  {  
     sign=0;
     if(Re_buf[0]==0x55)      //检查帧头
     {  
        switch(Re_buf [1])
        {
        case 0x51:
                a[0] = (short(Re_buf [3]<<8| Re_buf [2]))/32768.0*16;
                a[1] = (short(Re_buf [5]<<8| Re_buf [4]))/32768.0*16;
                a[2] = (short(Re_buf [7]<<8| Re_buf [6]))/32768.0*16;
                T = (short(Re_buf [9]<<8| Re_buf [8]))/340.0+36.25;
                break;
        case 0x52:
                w[0] = (short(Re_buf [3]<<8| Re_buf [2]))/32768.0*2000;
                w[1] = (short(Re_buf [5]<<8| Re_buf [4]))/32768.0*2000;
                w[2] = (short(Re_buf [7]<<8| Re_buf [6]))/32768.0*2000;
                T = (short(Re_buf [9]<<8| Re_buf [8]))/340.0+36.25;
                break;
        case 0x53:
                angle[0] = (short(Re_buf [3]<<8| Re_buf [2]))/32768.0*180;
                angle[1] = (short(Re_buf [5]<<8| Re_buf [4]))/32768.0*180;
                angle[2] = (short(Re_buf [7]<<8| Re_buf [6]))/32768.0*180;
                T = (short(Re_buf [9]<<8| Re_buf [8]))/340.0+36.25;
                Serial.print("a:");
                Serial.print(a[0]);Serial.print(" ");
                Serial.print(a[1]);Serial.print(" ");
                Serial.print(a[2]);Serial.print(" ");
                Serial.print("w:");
                Serial.print(w[0]);Serial.print(" ");
                Serial.print(w[1]);Serial.print(" ");
                Serial.print(a[2]);Serial.print(" ");
                Serial.print("angle:");
                Serial.print(angle[0]);Serial.print(" ");
                Serial.print(angle[1]);Serial.print(" ");
                Serial.print(angle[2]);Serial.print(" ");
                Serial.print("T:");
                Serial.println(T);
                break;
        }
    }
  }
}

void serialEvent() {
  while (Serial.available()) {
   
    //char inChar = (char)Serial.read(); Serial.print(inChar); //Output Original Data, use this code
  
    Re_buf[counter]=(unsigned char)Serial.read();
    if(counter==0&&Re_buf[0]!=0x55) return;      //第0号数据不是帧头              
    counter++;      
    if(counter==11)             //接收到11个数据
    {   
       counter=0;               //重新赋值,准备下一帧数据的接收
       sign=1;
    }
      
  }
}
[/code]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2014-8-12 16:56:17 | 显示全部楼层
上传图片不大于8m就行,为嘛我的500kb却说超出尺寸大小?
回复 支持 反对

使用道具 举报

发表于 2014-8-12 17:20:24 | 显示全部楼层
hm184092 发表于 2014-8-12 16:56
上传图片不大于8m就行,为嘛我的500kb却说超出尺寸大小?

说明8M是骗人的,
回复 支持 反对

使用道具 举报

发表于 2014-8-12 20:50:14 | 显示全部楼层
不错,值得学习研究
回复 支持 反对

使用道具 举报

发表于 2014-8-12 22:07:40 | 显示全部楼层
貌似没有用dmp
回复 支持 反对

使用道具 举报

发表于 2014-8-13 08:38:16 | 显示全部楼层
你公布的存在你要说的所谓“算法”么!
回复 支持 反对

使用道具 举报

发表于 2014-8-13 17:06:01 | 显示全部楼层
在数学和计算机科学之中,算法(Algorithm)为一个计算的具体步骤,常用于计算、数据处理和自动推理。精确而言,算法是一个表示为有限长列表的有效方法。算法应包含清晰定义的指令用于计算函数 。
算法是一种描述程序行为的语言,广泛应用于计算机科学领域,是一种让程序最为简洁的思考方式。
摘自 百度百科《 算法》   http://baike.baidu.com/view/7420.htm?fr=aladdin
算法其实就是一个计算和处理的思路,然后又思路转换成代码

楼主这个不叫算法,几乎没有运算了都。只是原始数据输出而已
回复 支持 反对

使用道具 举报

发表于 2014-11-28 14:38:31 | 显示全部楼层
为什么我的没有输出?这是什么问题?
回复 支持 反对

使用道具 举报

发表于 2015-5-6 22:54:57 | 显示全部楼层
mpu6050怎么通过串口得到数据呢?
回复 支持 反对

使用道具 举报

发表于 2015-5-7 09:51:26 | 显示全部楼层
我记得有个卖家卖卖这个的,stm8sXXX+MPU6050,输出格式跟LZ这个一样,LZ果断是个标题党
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 23:57 , Processed in 0.046480 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表