BMA180 triple axis accelerometer example. https://www.sparkfun.com/commerce/product_info.php?products_id=9723

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
mux
Date:
Wed Nov 10 20:13:23 2010 +0000
Commit message:

Changed in this revision

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 10e5fb9080cf main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Nov 10 20:13:23 2010 +0000
@@ -0,0 +1,53 @@
+#include "mbed.h"
+#define BMA180_ID       0x00
+#define BMA180_ADDR     0x80 //datasheet says 0x40 !
+#define BMA180_X_ACC    0x02
+#define BMA180_Y_ACC    0x04
+#define BMA180_Z_ACC    0x06
+#define BMA180_SDA      p9
+#define BMA180_SCL      p10
+I2C i2c(BMA180_SDA, BMA180_SCL);
+
+int main() {
+    char data[2];
+    int16_t x,y,z;
+    
+    i2c.frequency(100000);
+    
+    //read chip_id
+    data[0] = BMA180_ID;
+    data[1] = 0x00;
+    
+    i2c.write(BMA180_ADDR, data, 1);    
+    i2c.read(BMA180_ADDR, data, 1);  
+        
+    if (data[0] != 0x03) {
+        printf("invalid chip id %d\n", data[0]);
+        return 1;
+    }
+    
+    while(1) {
+        data[0] = BMA180_X_ACC;
+        i2c.write(BMA180_ADDR, data, 1);
+        i2c.read(BMA180_ADDR, data, 2);
+        data[0] >>= 2;
+        x  = *((int16_t*)data);
+        
+        data[0] = BMA180_Y_ACC;
+        i2c.write(BMA180_ADDR, data, 1);
+        i2c.read(BMA180_ADDR, data, 2);
+        data[0] >>= 2;
+        y  = *((int16_t*)data);
+       
+        data[0] = BMA180_Z_ACC;
+        i2c.write(BMA180_ADDR, data, 1);
+        i2c.read(BMA180_ADDR, data, 2);
+        data[0] >>= 2;
+        z  = *((int16_t*)data);
+                
+        //printf("x: %d y: %d z: %d\n", x, y, z);
+        printf("x: %.1f y: %.1f z: %.1f\n", x/16384.0f, y/16384.0f, z/16384.0f); //2^14
+        
+        wait_ms(100);
+    }
+}
diff -r 000000000000 -r 10e5fb9080cf mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Nov 10 20:13:23 2010 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/e2ac27c8e93e