10.限幅消抖濾波法
/*
A、名稱:限幅消抖濾波法
B、方法:
相當於“限幅濾波法”+“消抖濾波法”;
先限幅,後消抖。
C、優點:
繼承了“限幅”和“消抖”的優點;
改進了“消抖濾波法”中的某些缺陷,避免將干擾值導入系統。
D、缺點:
對於快速變化的參數不宜。
E、整理:shenhaiyu 2013-11-01
*/
int Filter_Value;
int Value;
void setup() {
Serial.begin(9600); // 初始化串口通信
randomSeed(analogRead(0)); // 產生隨機種子
Value = 300;
}
void loop() {
Filter_Value = Filter(); // 獲得濾波器輸出值
Serial.println(Filter_Value); // 串口輸出
delay(50);
}
// 用於隨機產生一個300左右的當前值
int Get_AD() {
return random(295, 305);
}
// 限幅消抖濾波法
#define FILTER_A 1
#define FILTER_N 5
int i = 0;
int Filter() {
int NewValue;
int new_value;
NewValue = Get_AD();
if(((NewValue - Value) > FILTER_A) || ((Value - NewValue) > FILTER_A))
new_value = Value;
else
new_value = NewValue;
if(Value != new_value) {
i++;
if(i > FILTER_N) {
i = 0;
Value = new_value;
}
}
else
i = 0;
return Value;
}