Arduino 序列埠過濾庫
Arduino 的序列埠過濾庫可以幫助您對任何傳入資料應用一些低通濾波器和中值濾波器,從而為您提供過濾後的輸出。該庫的 GitHub 倉庫可以在這裡找到這裡,並且內容非常詳細。
要安裝該庫,請從 GitHub 下載原始碼,並將“Filter”資料夾放置在 Arduino 的 libraries 資料夾中(在 Windows 上,路徑通常為:C:/Users/<YourUserName>/Documents/Arduino/libraries)
完成此操作後,在 Arduino IDE 中,開啟檔案→示例→Filter,並選擇您選擇的示例(例如firFilter)
如您所見,程式碼非常簡單。
#include <firFilter.h> firFilter Filter; int value; int filtered; void setup() { Serial.begin(115200); Filter.begin(); } void loop() { value = analogRead(A0); filtered= Filter.run(value); Serial.print("In: "); Serial.print(value); Serial.print(" - Out: "); Serial.println(filtered); delay(100); // make it readable }
它獲取傳入的analogRead值,對其應用濾波器,並返回輸出值。
事實上,如果您沒有可用的模擬源,我們可以使用random()函式測試濾波器。請檢視下面的修改後的示例 -
#include <firFilter.h> firFilter Filter; int value; int filtered; int x = 0; void setup() { Serial.begin(9600); Filter.begin(); } void loop() { value = (sin(x*3.14/180) + random(100)*1.0/50)*100.0; filtered= Filter.run(value); //Serial.print("In: "); Serial.print(value); Serial.print(','); //Serial.print(" - Out: "); Serial.println(filtered); delay(50); //make it readable x = x+1; }
我們已將噪聲新增到正弦波中。如果我們檢視序列繪圖儀輸出,它看起來像這樣 -
藍線表示原始訊號,紅線表示濾波後的訊號。如您所見,藍色訊號比紅色訊號更嘈雜,這意味著濾波器似乎正在工作。
您可以試用此庫附帶的其他濾波器。
廣告