You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.9 KiB
Plaintext
67 lines
1.9 KiB
Plaintext
15 years ago
|
/*
|
||
|
|
||
|
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
|
||
14 years ago
|
|
||
|
This example code is in the public domain.
|
||
15 years ago
|
|
||
|
|
||
|
*/
|
||
|
|
||
|
|
||
|
// 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
|
||
|
|
||
14 years ago
|
int inputPin = A0;
|
||
15 years ago
|
|
||
|
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, DEC);
|
||
|
}
|
||
|
|
||
|
|