asdf

Dependencies:   mbed

Fork of MPU6050_Driver_Balance by Chen Huan

Files at this revision

API Documentation at this revision

Comitter:
brainliang
Date:
Wed May 09 09:59:32 2018 +0000
Parent:
0:badebd32bd8b
Commit message:
adfsfdsa

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Mon Apr 09 14:34:45 2018 +0000
+++ b/main.cpp	Wed May 09 09:59:32 2018 +0000
@@ -2,12 +2,33 @@
 #include "mpu6050.h" 
 
 
-DigitalOut myled(LED1);
-Serial pc(SERIAL_TX, SERIAL_RX);
+DigitalOut myled(PC_13);
+Serial pc(PA_2, PA_3);
+Ticker pid_ticker;   //声明一个 Ticker 对象
+
+void pid_calculator();
+
+float pitch,roll,yaw;       //欧拉角
+unsigned int filure_counter = 0;
+unsigned int SystemTick = 0;
+
+void pid_calculator()   //更新当前姿态 运行PID算法 
+{
+    SystemTick++;
+    if(SystemTick >= 5000)
+        SystemTick = 0;
+    if(mpu_dmp_get_data(&pitch,&roll,&yaw) != 0)
+        filure_counter++;
+}
+
 
 int main() {
-    float pitch,roll,yaw;       //欧拉角
-
+    
+    int time_now = 0;
+    
+    pid_ticker.attach(&pid_calculator, 0.01);   //中断跑在100Hz,因为6050也是以100Hz刷新,PID一定要写在中断pid_calculator()中
+    
+    
     MPU_Init();                 //初始化MPU6050
     myled = 0;
     while(mpu_dmp_init())
@@ -17,9 +38,16 @@
     }    
     while(1)
     {
-        if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0)//获取欧拉角
-        { 
+            //检测读取数据失败的次数 如感觉6050读数存在问题运行此段代码检查 串口打印的是每1s内 数据获取失败的次数
+            /*if((SystemTick - time_now) >= 100)   
+            {
+                time_now = SystemTick;
+                pc.printf("%d\r\n", filure_counter);
+                filure_counter = 0;
+            }*/
+            
+            
             pc.printf("pitch: %.2f roll: %.2f yaw: %.2f\r\n", pitch,roll,yaw);
-        }
     }   
 }
+