1
0
mirror of https://github.com/arduino/Arduino.git synced 2024-12-11 22:24:13 +01:00
Arduino/build/shared/dist/examples/Analog/Smoothing/Smoothing.pde

65 lines
1.9 KiB
Plaintext
Raw Normal View History

2007-04-23 17:43:12 +02:00
/*
2009-06-17 23:31:00 +02:00
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>
http://www.arduino.cc/en/Tutorial/Smoothing
*/
2007-04-23 17:43:12 +02:00
// 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
2009-06-17 23:31:00 +02:00
// respond to the input. Using a constant rather than a normal variable lets
2007-04-23 17:43:12 +02:00
// use this value to determine the size of the readings array.
2009-06-17 23:31:00 +02:00
const int numReadings = 10;
2007-04-23 17:43:12 +02:00
2009-06-17 23:31:00 +02:00
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
2007-04-23 17:43:12 +02:00
int inputPin = 0;
void setup()
{
2009-06-17 23:31:00 +02:00
// initialize serial communication with computer:
Serial.begin(9600);
// initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++)
readings[thisReading] = 0;
2007-04-23 17:43:12 +02:00
}
2009-06-17 23:31:00 +02:00
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);
2007-04-23 17:43:12 +02:00
}
2009-06-17 23:31:00 +02:00