3-Axis Digital Accelerometer is the key part in projects like orientation detection, gesture detection and Motion detection. This 3-Asix Digital Accelerometer(±1.5g) is based on Freescale's low power consumption module, MMA7660FC. It features up to 10,000g high shock surviability and configurable Samples per Second rate. For generous applications that don't require too large measurement range, this is a great choice because it's durable, energy saving and cost-efficient.

Fork of Grove_3-Axis_Digital_Accelerometer_MMA7660FC_Library by Austin Blackstone

Revision:
1:08f271727b67
Parent:
0:cc40c3196635
diff -r cc40c3196635 -r 08f271727b67 MMA7660FC.cpp
--- a/MMA7660FC.cpp	Fri Sep 05 23:14:35 2014 +0000
+++ b/MMA7660FC.cpp	Tue Jul 23 21:39:37 2019 +0000
@@ -119,11 +119,24 @@
     *z = ((char)(val[2]<<2))/4;
 }
 
+void MMA7660::getSignedXYZ(int8_t *x,int8_t *y,int8_t *z)
+{
+    int8_t val[3];
+    getXYZ(val + 0, val + 1, val + 2);
+    
+    for (size_t i = 0; i < sizeof(val); i++) {
+        val[i] = val[i] >= 32 ? val[i] - 64 : val[i];
+    }
+    *x = val[0];
+    *y = val[1];
+    *z = val[2];
+}
+
 void MMA7660::getAcceleration(float *ax,float *ay,float *az)
 {
     int8_t x,y,z;
-    getXYZ(&x,&y,&z);
-    *ax = x/21.00;
-    *ay = y/21.00;
-    *az = z/21.00;
+    getSignedXYZ(&x,&y,&z);
+    *ax = x/21.33;
+    *ay = y/21.33;
+    *az = z/21.33;
 }