MMA7260Q Accelerometer

Revision:
0:7d4712fa571d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Accelerometer.cpp	Mon Mar 07 04:15:02 2011 +0000
@@ -0,0 +1,77 @@
+#include "Accelerometer.h"
+
+Accelerometer::Accelerometer(PinName xPin, PinName yPin,PinName zPin, PinName slpPin, PinName  gs1Pin, PinName gs2Pin) :
+        xout(xPin), yout(yPin), zout(zPin), gs1(gs1Pin), gs2(gs2Pin), sleep(slpPin) {
+    sleep = 1; // normal mode
+    gs1 = 0; // 1.5G mode
+    gs2 = 0; // 1.5G mode
+    scale = 0.8;
+}
+
+float Accelerometer::getAccel() {
+    float x = getAccelX();
+    float y = getAccelY();
+    float z = getAccelZ();
+    return sqrt(x * x + y * y + z * z);
+}
+
+float Accelerometer::getAccelX() {
+    return ((xout * 3.3) - 1.65) / scale;
+}
+
+float Accelerometer::getAccelY() {
+    return ((yout * 3.3) - 1.65) / scale;
+}
+
+float Accelerometer::getAccelZ() {
+    return ((zout * 3.3) - 1.65) / scale;
+}
+
+float Accelerometer::getTiltX() {
+    float x = getAccelX();
+    float y = getAccelY();
+    float z = getAccelZ();
+    float a =  sqrt(x * x + y * y + z * z);
+    return asin(x / a);
+}
+
+float Accelerometer::getTiltY() {
+    float x = getAccelX();
+    float y = getAccelY();
+    float z = getAccelZ();
+    float a =  sqrt(x * x + y * y + z * z);
+    return asin(y / a);
+}
+
+float Accelerometer::getTiltZ() {
+    float x = getAccelX();
+    float y = getAccelY();
+    float z = getAccelZ();
+    float a =  sqrt(x * x + y * y + z * z);
+    return asin(z / a);
+}
+
+void Accelerometer::setScale(Scale scale) {
+    switch (scale) {
+        case SCALE_1_5G:
+            this->scale = 0.8;
+            gs1 = gs2 = 0;
+            break;
+        case SCALE_2G:
+            this->scale = 0.6;
+            gs1 = 1; gs2 = 0;
+            break;
+        case SCALE_4G:
+            this->scale = 0.3;
+            gs1 = 0; gs2 = 1;
+            break;
+        case SCALE_6G:
+            this->scale = 0.2;
+            gs1 = gs2 = 1;
+            break;
+    }
+}
+
+void Accelerometer::setSleep(bool on) {
+    sleep = !on;
+}
\ No newline at end of file