Test for On-Board accelerometer and magnetometer

Dependencies:   FXOS8700CQ mbed

Files at this revision

API Documentation at this revision

Comitter:
joshwilkins2013
Date:
Tue Mar 31 22:37:21 2015 +0000
Commit message:

Changed in this revision

FXOS8700CQ.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 50827c2b52fb FXOS8700CQ.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FXOS8700CQ.lib	Tue Mar 31 22:37:21 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/trm/code/FXOS8700CQ/#e2fe752b881e
diff -r 000000000000 -r 50827c2b52fb main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Mar 31 22:37:21 2015 +0000
@@ -0,0 +1,65 @@
+#include "mbed.h"
+#include "FXOS8700CQ.h"
+ 
+Serial pc(USBTX, USBRX); // Primary output to demonstrate library
+ 
+FXOS8700CQ fxos(PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // SDA, SCL, (addr << 1)
+ 
+DigitalOut green(LED_GREEN); // waiting light
+DigitalOut blue(LED_BLUE); // collection-in-progress light
+DigitalOut red(LED_RED); // completed/error ligt
+ 
+Timer t; // Microsecond timer, 32 bit int, maximum count of ~30 minutes
+InterruptIn fxos_int2(PTC13); // should just be the Data-Ready interrupt
+bool fxos_int2_triggered = false; // Interrupt status flags and data
+ 
+SRAWDATA accel_data; // Storage for the data from the sensor
+SRAWDATA magn_data;
+ 
+void trigger_fxos_int2(void){
+    fxos_int2_triggered = true;
+}
+ 
+void print_reading(){
+    pc.printf("A X:%5d,Y:%5d,Z:%5d   M X:%5d,Y:%5d,Z:%5d\r\n",
+              accel_data.x, accel_data.y, accel_data.z,
+              magn_data.x, magn_data.y, magn_data.z);
+}
+ 
+int main(void){
+    t.reset();
+    pc.baud(115200); // 200Hz x line of output data!
+    
+    green.write(1);
+    red.write(1);
+    blue.write(1);
+ 
+    printf("\r\n\nFXOS8700Q Who Am I= %X\r\n", fxos.get_whoami());
+     
+    fxos_int2.fall(&trigger_fxos_int2); // Iterrupt for active-low interrupt line from FXOS
+    fxos.enable();
+ 
+    green.write(0); // ready-green on
+ 
+    // Example data printing
+    fxos.get_data(&accel_data, &magn_data);
+    print_reading();
+ 
+    pc.printf("Started data collection. Accelerometer at max %dg.\r\n",
+    fxos.get_accel_scale());
+ 
+    fxos.get_data(&accel_data, &magn_data); // clear interrupt from device
+    fxos_int2_triggered = false; // un-trigger
+ 
+    t.start(); // start timer and enter collection loop
+    while(1){
+       if(fxos_int2_triggered) {
+           fxos_int2_triggered = false; // un-trigger
+           fxos.get_data(&accel_data, &magn_data);
+           print_reading(); // outpouring of data !!
+        }
+ 
+        // Continuous polling of interrupt status is not efficient, but...
+        wait_us(500); // 1/10th the period of the 200Hz sample rate
+    }
+}
\ No newline at end of file
diff -r 000000000000 -r 50827c2b52fb mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Tue Mar 31 22:37:21 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/487b796308b0
\ No newline at end of file