Tirando a média

O Arduino lê repetidamente a uma entrada analógica, calcula a média móvel e imprime-a no computador. Demonstra o uso de vetores.

Circuito

Ligue o potenciômetro à entrada analógica 0.

Código

// Defina o número de amostras a considerar. Quanto maior, 
// mais homogênea serão as leituras, porém, mais lentamente a saída
// responderá à entrada.
#define NUMREADINGS 10

int readings[NUMREADINGS];                // qtde de amostras
int index = 0;                            // índice da leitura atual
int total = 0;                            // total móvel
int average = 0;                          // média

int inputPin = 0;

void setup()
{
  Serial.begin(9600);                     // inicializa com. serial com o computador
  for (int i = 0; i < NUMREADINGS; i++)
    readings[i] = 0;                      // inicializa todas as leituras com 0
}

void loop()
{
  total -= readings[index];               // subtrair a última leitura
  readings[index] = analogRead(inputPin); // ler do sensor
  total += readings[index];               // adicionar leitura ao total
  index = (index + 1);                    // avançar ao próximo índice

  if (index >= NUMREADINGS)               // se estiver no fim do vetor...
    index = 0;                            // ...meia-volta ao início

  average = total / NUMREADINGS;          // calcular a média
  Serial.println(average);                // enviá-la ao computador (em forma ASCII)
}

Share