Yi-Wen Liao / Mbed 2 deprecated IMUtestProgram

Dependencies:   IMUdriverMPU6000 mbed

Files at this revision

API Documentation at this revision

Comitter:
ywliao
Date:
Sun Nov 23 03:19:28 2014 +0000
Commit message:
No history change

Changed in this revision

IMUdriver.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r af4d1b736f96 IMUdriver.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IMUdriver.lib	Sun Nov 23 03:19:28 2014 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/ywliao/code/IMUdriverMPU6000/#233304f0df3a
diff -r 000000000000 -r af4d1b736f96 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Nov 23 03:19:28 2014 +0000
@@ -0,0 +1,88 @@
+//   IMU example code
+//   8/22/2014 edit by Grace (Yi-Wen Liao)
+
+
+/*#include "mbed.h"
+#include "MPU6000.h"        //Include library
+SPI spi(p11, p12, p13);     //define the SPI (mosi, miso, sclk)
+mpu6000_spi imu(spi,p22);   //define the mpu6000 object
+int main(){
+    if(imu.init(1,BITS_DLPF_CFG_5HZ)){  //INIT the mpu6000
+        printf("\nCouldn't initialize MPU6000 via SPI!");
+    }    
+    wait(0.1);    
+    printf("\n\nWHOAMI=%u\n",imu.whoami()); //output the I2C address to know if SPI is working, it should be 104
+    wait(0.1);    
+    printf("\nGyro_scale=%u\n",imu.set_gyro_scale(BITS_FS_2000DPS));    //Set full scale range for gyros
+    wait(1);  
+    printf("\nAcc_scale=%u\n",imu.set_acc_scale(BITS_FS_16G));          //Set full scale range for accs
+    wait(0.1);    
+    while(1) {
+        //printf("\nT=%.3f",imu.read_temp());
+        printf(" X=%.3f\n\r",imu.read_acc(0));  
+        //printf(" Y=%.3f\n\r",imu.read_acc(1)); 
+        //printf(" Z=%.3f\n\r",imu.read_acc(2));   
+        //printf(" rX=%.3f\n\r",imu.read_rot(0));  
+        //printf(" rY=%.3f\n\r",imu.read_rot(1)); 
+        //printf(" rZ=%.3f\n\r",imu.read_rot(2));
+    }
+}
+*/
+
+
+
+
+
+
+
+
+
+
+
+
+
+#include "mbed.h"
+#include "MPU6000.h"        //Include library
+SPI spi(p11, p12, p13);     //define the SPI (mosi, miso, sclk)
+mpu6000_spi imu(spi,p22);   //define the mpu6000 object
+Timer IMUt;
+float acc, gyro, theta;
+float accFilterCurrent, accFilterPre, gyroFilterCurrent, gyroFliterPre; 
+
+int main(){
+    
+    IMUt.start();
+    if(imu.init(1,BITS_DLPF_CFG_5HZ)){  //INIT the mpu6000
+    printf("\nCouldn't initialize MPU6000 via SPI!");
+    } 
+    imu.set_gyro_scale(BITS_FS_2000DPS); 
+    imu.set_acc_scale(BITS_FS_2G);          //Set full scale range for accs
+    wait(1);
+    
+    float acc = imu.getAccTilt();
+    float gyro = imu.read_rot(1);
+    
+    float accFilterPre= 0;
+    float gyroFliterPre = 0;
+    
+    while(1) 
+    { 
+      if (IMUt.read_ms()>=1) // read time in ms
+      { 
+          accFilterCurrent = 0.8187*accFilterPre+0.1813*acc;
+          gyroFilterCurrent = 0.8187*gyroFliterPre+0.0009063*gyro;
+          theta = accFilterCurrent + gyroFilterCurrent;
+          
+              
+          //printf("\n\nWHOAMI=%u\n",imu.whoami()); //output the I2C address to know if SPI is working, it should be 104
+          acc = imu.getAccTilt();
+          //printf("acc=%f\n\r",acc);
+          gyro = imu.read_rot(1);
+          //printf("GYRO=%f\n\r",gyro);
+          accFilterPre = accFilterCurrent;
+          gyroFliterPre = gyroFilterCurrent;
+          printf("theta=%f\n\r",theta);
+          IMUt.reset(); // reset timer
+      }
+    }
+}
diff -r 000000000000 -r af4d1b736f96 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sun Nov 23 03:19:28 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/9327015d4013
\ No newline at end of file