FreeIMU demo program for mbed

Dependencies:   FreeIMU mbed-rtos mbed

Files at this revision

API Documentation at this revision

Comitter:
tyftyftyf
Date:
Fri Nov 29 15:34:11 2013 +0000
Child:
1:63db4a12fc0a
Commit message:
Initial commit

Changed in this revision

FreeIMU.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-rtos.lib 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FreeIMU.lib	Fri Nov 29 15:34:11 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/tyftyftyf/code/FreeIMU/#80c9e84751cd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Nov 29 15:34:11 2013 +0000
@@ -0,0 +1,53 @@
+#include "mbed.h"
+#include "rtos.h"
+#include "FreeIMU.h"
+
+Serial pc(USBTX, USBRX); // tx, rx
+
+typedef struct {
+  float ypr[3];
+  float alt;
+  float temp;
+  int time;
+} imu_t;
+
+FreeIMU imu;
+Mail<imu_t, 4> imu_queue;
+int i = 0;
+Timer t,t2;
+
+void getIMUdata(void const *n){
+    i++;
+    if (i%10==0){
+        float *q = (float *)imu_queue.alloc();
+        t.reset();
+        t.start();
+        imu.getYawPitchRoll(q);
+        t.stop();
+        ((imu_t*)q)->time = t.read_us();
+        ((imu_t*)q)->alt = imu.getBaroAlt();
+        ((imu_t*)q)->temp = imu.baro->getTemperature();
+        imu_queue.put((imu_t*)q);
+    }else{
+        imu.getQ(NULL);
+    }
+}
+
+int main() {
+    imu.init(true);
+    pc.baud(115200);
+    RtosTimer IMUTimer(getIMUdata, osTimerPeriodic, (void *)0);
+    IMUTimer.start(2);
+    t2.start();
+    
+    while (true) {
+        t2.reset();
+        osEvent evt = imu_queue.get();
+        if (evt.status == osEventMail) {
+            imu_t *obj = (imu_t*)evt.value.p;
+            pc.printf("Y: %f, P: %f, R: %f, Alt: %f, Temp: %fC\r\n", obj->ypr[0], obj->ypr[1], obj->ypr[2], obj->alt, obj->temp);
+            imu_queue.free(obj);
+            pc.printf("\r\n");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-rtos.lib	Fri Nov 29 15:34:11 2013 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/mbed_official/code/mbed-rtos/#29007aef10a4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Nov 29 15:34:11 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/f37f3b9c9f0b
\ No newline at end of file