mirror of
https://github.com/arduino/Arduino.git
synced 2024-11-29 10:24:12 +01:00
This commit is contained in:
parent
83799e0938
commit
18beef8ee7
@ -1,43 +1,64 @@
|
||||
/*
|
||||
* Smoothing
|
||||
* David A. Mellis <dam@mellis.org>
|
||||
*
|
||||
* 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 <dam@mellis.org>
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user