diff options
Diffstat (limited to 'src/components')
-rw-r--r-- | src/components/motion/MotionController.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/components/motion/MotionController.cpp b/src/components/motion/MotionController.cpp index d26fffd0..7dd32127 100644 --- a/src/components/motion/MotionController.cpp +++ b/src/components/motion/MotionController.cpp @@ -48,20 +48,21 @@ bool MotionController::Should_ShakeWake(uint16_t thresh) { bool wake = false; auto diff = xTaskGetTickCount() - lastShakeTime; lastShakeTime = xTaskGetTickCount(); - int32_t speed = std::abs(z + (y/2) + (x/4)- lastYForShake - lastZForShake) / diff * 100; + /* Currently Polling at 10hz, If this ever goes faster scalar and EMA might need adjusting */ + int32_t speed = std::abs(z + (y / 2) + (x / 4) - lastYForShake - lastZForShake) / diff * 100; //(.2 * speed) + ((1 - .2) * accumulatedspeed); - //implemented without floats as .25Alpha - accumulatedspeed = (speed/5) + ((accumulatedspeed/5)*4); + // implemented without floats as .25Alpha + accumulatedspeed = (speed / 5) + ((accumulatedspeed / 5) * 4); - if (accumulatedspeed > thresh) { + if (accumulatedspeed > thresh) { wake = true; } - lastXForShake = x/4; - lastYForShake = y/2; + lastXForShake = x / 4; + lastYForShake = y / 2; lastZForShake = z; return wake; } -int32_t MotionController::currentShakeSpeed(){ +int32_t MotionController::currentShakeSpeed() { return accumulatedspeed; } |