Сглаживание (Smoothing)

Arduino ( Freeduino )
Сглаживание (Smoothing)



Постоянно считывает с аналогового входа, вычисляет текущее арифметическое среднее число и выводит число на компьютер. Показывает, как используются множества (arrays).

Потенциометр на аналоговом входе pin-а 0.



Схема:



Код:

/*

   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 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 = 0;

 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);               
 }


Подробнее на английском
technik 08.12.2009 в 18.43 комментарии 0 0

комментарии(0)

Комментировать

Для добавления комментария авторизируйтесь.
Последние комментарии:
© 2012 pobot.ru