/*
* Created by ArduinoGetStarted.com
*
* This example code is in the public domain
*
* Tutorial page: https://arduinogetstarted.com/faq/how-to-filter-noise-from-sensor
*/
int filterArray[20]; // array to store data samples from sensor
void setup() {
// begin serial port
Serial.begin (9600);
}
void loop() {
// 1. TAKING MULTIPLE MEASUREMENTS AND STORE IN AN ARRAY
for (int sample = 0; sample < 20; sample++) {
filterArray[sample] = analogRead(A0);;
delay(5);
}
// 2. SORTING THE ARRAY IN ASCENDING ORDER
for (int i = 0; i < 19; i++) {
for (int j = i + 1; j < 20; j++) {
if (filterArray[i] > filterArray[j]) {
int swap = filterArray[i];
filterArray[i] = filterArray[j];
filterArray[j] = swap;
}
}
}
// 3. FILTERING NOISE
// + the five smallest samples are considered as noise -> ignore it
// + the five biggest samples are considered as noise -> ignore it
// ----------------------------------------------------------------
// => get average of the 10 middle samples (from 5th to 14th)
long sum = 0;
for (int sample = 5; sample < 15; sample++) {
sum += filterArray[sample];
}
int avg_value = sum / 10;
// print the value to Serial Monitor
Serial.print("average value: ");
Serial.println(avg_value);
}
//========================================================================
//========================================================================