Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 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 <dam@mellis.org>
- modified 9 Apr 2012
- by Tom Igoe
- http://www.arduino.cc/en/Tutorial/Smoothing
- This example code is in the public domain.
- */
- // 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 input
- int index = 0; // the index of the current reading
- int total = 0; // the running total
- int average = 0; // the average
- int inputPin = A0;
- void setup()
- {
- // 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() {
- // 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
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement