I would like to suggest to complement your library with a getPitchRoll() function which should be quite handy,
void MMA8452::getPitchRoll(float *pitch, float *roll)
{
float Xg, Yg, Zg;
getAcceleration(&Xg, &Yg, &Zg);
//Low Pass Filter
_fXg = Xg * _alpha + (_fXg * (1.0 - _alpha));
_fYg = Yg * _alpha + (_fYg * (1.0 - _alpha));
_fZg = Zg * _alpha + (_fZg * (1.0 - _alpha));
*roll = (atan2(-_fYg, _fZg)*180.0) / M_PI;
*pitch = (atan2(_fXg, sqrt(_fYg*_fYg + _fZg*_fZg))*180.0) / M_PI;
}
And class members:
float _fXg=0, _fYg=0, _fZg=0, _alpha=0.5;
I would like to suggest to complement your library with a getPitchRoll() function which should be quite handy,
void MMA8452::getPitchRoll(float *pitch, float *roll)
{
float Xg, Yg, Zg;
getAcceleration(&Xg, &Yg, &Zg);
}
And class members:
float _fXg=0, _fYg=0, _fZg=0, _alpha=0.5;