Quad X Type Multicopter

Dependencies:   IAP

Revision:
8:1db19b529b22
Parent:
6:a50e6d3924f1
--- a/Limiter/Limiter.cpp	Tue Apr 28 01:48:21 2015 +0000
+++ b/Limiter/Limiter.cpp	Sun Feb 21 05:14:57 2021 +0000
@@ -1,37 +1,22 @@
 #include "mbed.h"
 #include "Limiter.h"
 
-Limiter::Limiter(float LIMIT)
+Limiter::Limiter(float RATE)
 {
-    _limit = LIMIT;
-    _rate = 0.05;   
-    _last= 0;
-    skip = false;
-}
-
-void Limiter::differential(float DIFF)
-{
-    _limit = DIFF;
+    _rate = RATE;
+    _lastval = 0.0;
 }
 
-void Limiter::rate(float RATE)
+void Limiter::setup(float _cutoffreq,float _interval)
 {
-    _rate = RATE;    
+    _period = 1 / _cutoffreq;
+    _rate = _period / ( _period + _interval );
+    _lastval = 0.0;
 }
 
-float Limiter::calc(float now)
+float Limiter::calc(float _now)
 {
-    if ( !skip ) { 
-        skip = true; 
-        return _last = now;
-    }
-    float differential = ( now - _last );
-//    if ( differential < _limit && differential > -_limit ) _last = now;
-    if ( differential > _limit ) _last += _limit * _rate;
-    else    {
-        if ( differential < -_limit ) _last -= _limit * _rate;
-        else _last = now;
-    }
-    return _last;
+    _lastval = _rate * _lastval + ( 1 - _rate ) * _now;
+    return _lastval;
 }
 ;