Created
May 30, 2017 20:43
-
-
Save giantmolecules/c2a29f9d28ea819763d7e351a0339e79 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
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 readIndex = 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[readIndex]; | |
// read from the sensor: | |
readings[readIndex] = analogRead(inputPin); | |
// add the reading to the total: | |
total = total + readings[readIndex]; | |
// advance to the next position in the array: | |
readIndex = readIndex + 1; | |
// if we're at the end of the array... | |
if (readIndex >= numReadings) { | |
// ...wrap around to the beginning: | |
readIndex = 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 | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment