- getAcceleration(accelerationX, accelerationY, accelerationZ);
- //smoothData(accelerationX, accelerationY, accelerationZ);
-
- // Apply calibration
- accelerationX = accelerationX - calibrationX;
- accelerationY = accelerationY - calibrationY;
- accelerationZ = accelerationZ - calibrationZ;
-
- // If the function is run the first time, make sure that there
- // are no differences with previous and current acceleration
- if (firstRun) {
- previousAccelerationX = accelerationX;
- previousAccelerationY = accelerationY;
- previousAccelerationZ = accelerationZ;
- firstRun = false;
- }
-
- // Calculate the current acceleration for each axis
- trueAccelerationX = (accelerationX - previousAccelerationX);
- trueAccelerationY = (accelerationY - previousAccelerationY);
- trueAccelerationZ = (accelerationZ - previousAccelerationZ);
-
- previousAccelerationX = accelerationX;
- previousAccelerationY = accelerationY;
- previousAccelerationZ = accelerationZ;
-
- currentAcceleration = sqrt((trueAccelerationX * trueAccelerationX) +
- (trueAccelerationY * trueAccelerationY) +
- (trueAccelerationZ * trueAccelerationZ));
+ x = (previousAccelerationX * (1 - kFilteringFactor)) + (x * kFilteringFactor);
+ y = (previousAccelerationY * (1 - kFilteringFactor)) + (y * kFilteringFactor);
+ z = (previousAccelerationZ * (1 - kFilteringFactor)) + (z * kFilteringFactor);