Embed:
(wiki syntax)
Show/hide line numbers
MMA7361L.cpp
00001 #include "MMA7361L.h" 00002 00003 MMA7361L::MMA7361L(PinName xoutPin, PinName youtPin,PinName zoutPin, 00004 PinName zeroGDetectPin) : 00005 xout(xoutPin), yout(youtPin), zout(zoutPin), 00006 zeroGDetect(zeroGDetectPin) { 00007 scaleX = 0.246; 00008 scaleY = 0.251; 00009 scaleZ = 0.219; 00010 Xo = 0.486; 00011 Yo = 0.520; 00012 Zo = 0.465; 00013 } 00014 00015 void MMA7361L::prepare(){ 00016 accelX = (xout - Xo) / scaleX; 00017 accelY = (yout - Yo) / scaleY; 00018 accelZ = (zout - Zo) / scaleZ; 00019 } 00020 00021 float MMA7361L::getAccel() { 00022 prepare(); 00023 return sqrt(accelX * accelX + accelY * accelY + accelZ * accelZ); 00024 } 00025 00026 float MMA7361L::getAccelX() { 00027 prepare(); 00028 return accelX; 00029 } 00030 00031 float MMA7361L::getAccelY() { 00032 prepare(); 00033 return accelY; 00034 } 00035 00036 float MMA7361L::getAccelZ() { 00037 prepare(); 00038 return accelZ; 00039 } 00040 00041 float MMA7361L::getTiltX() { 00042 prepare(); 00043 return asin(accelX / sqrt(accelX * accelX + accelY * accelY + accelZ * accelZ)); 00044 } 00045 00046 float MMA7361L::getTiltY() { 00047 prepare(); 00048 return asin(accelY / sqrt(accelX * accelX + accelY * accelY + accelZ * accelZ)); 00049 } 00050 00051 float MMA7361L::getTiltZ() { 00052 prepare(); 00053 return asin(accelZ / sqrt(accelX * accelX + accelY * accelY + accelZ * accelZ)); 00054 } 00055 00056 bool MMA7361L::zeroGDetected() { 00057 return zeroGDetect; 00058 } 00059 00060 void MMA7361L::setZeroGDetectListener(void (*func)(void)) { 00061 zeroGDetect.rise(func); 00062 } 00063 00064 template<typename T> void MMA7361L::setZeroGDetectListener(T* t, void (T::*func)(void)) { 00065 zeroG.rise(t, func); 00066 }
Generated on Fri Jul 15 2022 21:20:24 by
