45 lines
830 B
C++
45 lines
830 B
C++
class low_pass {
|
|
public:
|
|
|
|
low_pass(int factor) {
|
|
_factor = factor;
|
|
}
|
|
|
|
float filter(float reading) {
|
|
_value = _value * (_factor) + reading * (1.0 - _factor);
|
|
return _value;
|
|
}
|
|
|
|
float _value = 0;
|
|
float _factor = 0.99;
|
|
|
|
};
|
|
|
|
|
|
class mean_filter {
|
|
public:
|
|
|
|
mean_filter(int values) {
|
|
_values = values;
|
|
}
|
|
|
|
void init(float value){
|
|
for(int i=0;i<_values;i++){
|
|
_data[i] = value;
|
|
}
|
|
}
|
|
float filter(float reading) {
|
|
float temp = 0;
|
|
_data[_values - 1] = reading;
|
|
for (int i = 0; i < _values - 1; i++) {
|
|
temp += _data[i];
|
|
_data[i] = _data[i + 1];
|
|
}
|
|
temp += reading;
|
|
return temp / float(_values);
|
|
}
|
|
|
|
int _values = 5;
|
|
float _data[100] = {0};
|
|
};
|