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;

}