1.限幅濾波法

/*

A、名稱:限幅濾波法(又稱程序判斷濾波法)

B、方法:

根據經驗判斷,確定兩次采樣允許的最大偏差值(設為A),

每次檢測到新值時判斷:

如果本次值與上次值之差<=A,則本次值有效,

如果本次值與上次值之差>A,則本次值無效,放棄本次值,用上次值代替本次值。

C、優點:

能有效克服因偶然因素引起的脈衝干擾。

D、缺點:

無法抑制那種周期性的干擾。

平滑度差。

*/

int Filter_Value;

int Value;

void setup() {

Serial.begin(9600); // 初始化串口通信

randomSeed(analogRead(0)); // 產生隨機種子

Value = 300;

}

void loop() {

Filter_Value = Filter(); // 獲得濾波器輸出值

Value = Filter_Value; // 最近一次有效采樣的值,該變量為全局變量

Serial.println(Filter_Value); // 串口輸出

delay(50);

}

// 用於隨機產生一個300左右的當前值

int Get_AD() {

return random(295, 305);

}

// 限幅濾波法(又稱程序判斷濾波法)

#define FILTER_A 1

int Filter() {

int NewValue;

NewValue = Get_AD();

if(((NewValue - Value) > FILTER_A) || ((Value - NewValue) > FILTER_A))

return Value;

else

return NewValue;

}