hm184092 发表于 2014-8-12 16:54:57

mpu6050算法分享

买了一块mpu6050,是串口输出数据的,感觉还不错,所以把算法代码分享一下unsigned char Re_buf,counter=0;
unsigned char sign=0;
float a,w,angle,T;
void setup() {
// initialize serial:
Serial.begin(115200);
}

void loop() {
if(sign)
{
   sign=0;
   if(Re_buf==0x55)      //检查帧头
   {
        switch(Re_buf )
        {
        case 0x51:
                a = (short(Re_buf <<8| Re_buf ))/32768.0*16;
                a = (short(Re_buf <<8| Re_buf ))/32768.0*16;
                a = (short(Re_buf <<8| Re_buf ))/32768.0*16;
                T = (short(Re_buf <<8| Re_buf ))/340.0+36.25;
                break;
        case 0x52:
                w = (short(Re_buf <<8| Re_buf ))/32768.0*2000;
                w = (short(Re_buf <<8| Re_buf ))/32768.0*2000;
                w = (short(Re_buf <<8| Re_buf ))/32768.0*2000;
                T = (short(Re_buf <<8| Re_buf ))/340.0+36.25;
                break;
        case 0x53:
              angle = (short(Re_buf <<8| Re_buf ))/32768.0*180;
                angle = (short(Re_buf <<8| Re_buf ))/32768.0*180;
                angle = (short(Re_buf <<8| Re_buf ))/32768.0*180;
                T = (short(Re_buf <<8| Re_buf ))/340.0+36.25;
                Serial.print("a:");
                Serial.print(a);Serial.print(" ");
                Serial.print(a);Serial.print(" ");
                Serial.print(a);Serial.print(" ");
                Serial.print("w:");
                Serial.print(w);Serial.print(" ");
                Serial.print(w);Serial.print(" ");
                Serial.print(a);Serial.print(" ");
                Serial.print("angle:");
                Serial.print(angle);Serial.print(" ");
                Serial.print(angle);Serial.print(" ");
                Serial.print(angle);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=(unsigned char)Serial.read();
    if(counter==0&&Re_buf!=0x55) return;      //第0号数据不是帧头            
    counter++;      
    if(counter==11)             //接收到11个数据
    {   
       counter=0;               //重新赋值,准备下一帧数据的接收
       sign=1;
    }
      
}
}

hm184092 发表于 2014-8-12 16:56:17

上传图片不大于8m就行,为嘛我的500kb却说超出尺寸大小?

i7456 发表于 2014-8-12 17:20:24

hm184092 发表于 2014-8-12 16:56 static/image/common/back.gif
上传图片不大于8m就行,为嘛我的500kb却说超出尺寸大小?

说明8M是骗人的,

学慧放弃 发表于 2014-8-12 20:50:14

不错,值得学习研究

Ned_Flander 发表于 2014-8-12 22:07:40

貌似没有用dmp

拾瑞 发表于 2014-8-13 08:38:16

你公布的存在你要说的所谓“算法”么!:@

darkorigin 发表于 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怎么通过串口得到数据呢?

五哥U五哥 发表于 2015-5-7 09:51:26

我记得有个卖家卖卖这个的,stm8sXXX+MPU6050,输出格式跟LZ这个一样,LZ果断是个标题党
页: [1]
查看完整版本: mpu6050算法分享