const int numReadings = 16;
int readings[numReadings]; // Array to store the readings
int sum = 0;
int minValue, maxValue;
float average = 0.0;
int numMin = 0;
int numMax = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
// Take 10 readings
for (int i = 0; i < numReadings; i++) {
readings[i] = analogRead(A0);
delay(10); //*********************************
Serial.print(readings[i]); Serial.print("/");
}
Serial.println();
// Initialize min and max with the first reading
minValue = readings[0];
maxValue = readings[0];
// Find the min and max values
for (int i = 1; i < numReadings; i++) {
if (readings[i] < minValue) {
minValue = readings[i];
}
if (readings[i] > maxValue) {
maxValue = readings[i];
}
}
// *** Find nummin/nummax ********************
numMin = 0;
for (int i = 0; i < numReadings; i++) {
if (readings[i] == minValue) {
numMin++;
}
}
Serial.println(numMin);
numMax = 0;
for (int i = 0; i < numReadings; i++) {
if (readings[i] == maxValue) {
numMax++;
}
}
Serial.println(numMax);
//********************************************
// Calculate the sum excluding min and max
sum = 0;
for (int i = 0; i < numReadings; i++) {
if (readings[i] != minValue && readings[i] != maxValue) {
sum += readings[i];
}
}
// Calculate the average excluding min and max
average = sum / float(numReadings - numMin - numMax); //********
//Serial.println();
Serial.print("Average out max/min: ");
Serial.println(average);
delay(500);
} // *** END loop