Bạn có thể lọc kỹ thuật số này bằng bộ lọc thông thấp:
int valueFilt = (1-0.99)*value + 0.99*valueFilt;
Thay đổi 0,99 để thay đổi tần số cắt (gần với 1.0 là tần số thấp hơn). Biểu thức thực tế cho giá trị đó là exp (-2 * pi * f / fs) trong đó f là tần số cắt bạn muốn và fs là tần số mà dữ liệu được lấy mẫu tại.
Một loại "bộ lọc kỹ thuật số" khác là bộ lọc sự kiện. Nó hoạt động tốt trên dữ liệu có các ngoại lệ; ví dụ: 9,9,8,10,9,25,9. Một bộ lọc sự kiện trả về giá trị thường xuyên nhất. Theo thống kê đây là chế độ.
Các trung bình thống kê như Trung bình, Chế độ, v.v. có thể được tính bằng Thư viện trung bình Arduino .
Một ví dụ được lấy từ trang Thư viện Arduino được đề cập đến:
#include <Average.h>
#define CNT 600
int d[CNT];
void setup()
{
Serial.begin(9600);
}
void loop()
{
int i;
for(i=0; i<CNT; i++)
{
d[i] = random(500);
}
Serial.print("Mean: ");
Serial.print(mean(d,CNT),DEC);
Serial.print(" Mode: ");
Serial.print(mode(d,CNT),DEC);
Serial.print(" Max: ");
Serial.print(maximum(d,CNT),DEC);
Serial.print(" Min: ");
Serial.print(minimum(d,CNT),DEC);
Serial.print(" Standard deviation: ");
Serial.print(stddev(d,CNT),4);
Serial.println("");
Serial.println("");
delay(5000);
}