MMA7260Q Accelerometer
Accelerometer.cpp
- Committer:
- yamaguch
- Date:
- 2011-03-07
- Revision:
- 3:e31cb4dd4aa6
- Parent:
- 0:7d4712fa571d
File content as of revision 3:e31cb4dd4aa6:
#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; }