From 18beef8ee76d181aa2636531f9490d4862778ce7 Mon Sep 17 00:00:00 2001 From: Tom Igoe Date: Wed, 17 Jun 2009 21:31:00 +0000 Subject: [PATCH] --- .../examples/Analog/Smoothing/Smoothing.pde | 79 ++++++++++++------- 1 file changed, 50 insertions(+), 29 deletions(-) diff --git a/build/shared/dist/examples/Analog/Smoothing/Smoothing.pde b/build/shared/dist/examples/Analog/Smoothing/Smoothing.pde index 1f9aefb5c..881bb1317 100644 --- a/build/shared/dist/examples/Analog/Smoothing/Smoothing.pde +++ b/build/shared/dist/examples/Analog/Smoothing/Smoothing.pde @@ -1,43 +1,64 @@ /* - * Smoothing - * David A. Mellis - * - * Reads repeatedly from an analog input, calculating a running average - * and printing it to the computer. - * - * http://www.arduino.cc/en/Tutorial/Smoothing - */ + + Smoothing + + Reads repeatedly from an analog input, calculating a running average + and printing it to the computer. Keeps ten readings in an array and + continually averages them. + + The circuit: + * Analog sensor (potentiometer will do) attached to analog input 0 + + Created 22 April 2007 + By David A. Mellis + + http://www.arduino.cc/en/Tutorial/Smoothing + + +*/ + // 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 #define rather than a normal variable lets +// respond to the input. Using a constant rather than a normal variable lets // use this value to determine the size of the readings array. -#define NUMREADINGS 10 +const int numReadings = 10; -int readings[NUMREADINGS]; // the readings from the analog input -int index = 0; // the index of the current reading -int total = 0; // the running total -int average = 0; // the average +int readings[numReadings]; // the readings from the analog input +int index = 0; // the index of the current reading +int total = 0; // the running total +int average = 0; // the average int inputPin = 0; void setup() { - Serial.begin(9600); // initialize serial communication with computer - for (int i = 0; i < NUMREADINGS; i++) - readings[i] = 0; // initialize all the readings to 0 + // initialize serial communication with computer: + Serial.begin(9600); + // initialize all the readings to 0: + for (int thisReading = 0; thisReading < numReadings; thisReading++) + readings[thisReading] = 0; } -void loop() -{ - total -= readings[index]; // subtract the last reading - readings[index] = analogRead(inputPin); // read from the sensor - total += readings[index]; // add the reading to the total - index = (index + 1); // advance to the next index - - if (index >= NUMREADINGS) // if we're at the end of the array... - index = 0; // ...wrap around to the beginning - - average = total / NUMREADINGS; // calculate the average - Serial.println(average); // send it to the computer (as ASCII digits) +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, DEC); } + +