// Define the number of samples to keep track of. The higher the number,// the more the readings will be smoothed, but the slower the output will// respond to the input. Using a constant rather than a normal variable lets// use this value to determine the size of the readings array.const int numReadings = 10;

int readings[numReadings]; // the readings from the analog inputint index = 0; // the index of the current readingint total = 0; // the running totalint average = 0; // the average

void loop() { // subtract the last reading: total= total - readings[index]; // read from the sensor: readings[index] = analogRead(inputPin); // add the reading to the total: total= total + readings[index]; // advance to the next position in the array: index = index + 1;

// if we're at the end of the array... if (index >= numReadings) // ...wrap around to the beginning: index = 0;

// calculate the average: average = total / numReadings; // send it to the computer as ASCII digits Serial.println(average); delay(1); // delay in between reads for stability }