In questo tutorial costruiamo un circuito in cui collegare un qualsiasi sensore al pin analogico 0, leggiamo 10 valori e ne calcoliamo la media.

Il codice da scrivere è il seguente:

 

 

#define NUMREADINGS 10 //10 valori da leggere
#define inputPin 0 //Sensore collegato al pin analogico 0
int readings[NUMREADINGS]; //Letture dal input analogico
int index = 0; //Indice della lettura corrente
int total = 0; //Totale letture
int average = 0; //Media

void setup()
{
Serial.begin(9600);
for (int i = 0; i < NUMREADINGS; i++)
readings[i] = 0; //Mette tutti 0 nell'array
}

void loop()
{
total -= readings[index]; //Sottrae l'ultima lettura
readings[index] = analogRead(inputPin); //Legge i valori provenienti dal sensore e li salva nell'array
total += readings[index]; //Aggiunge la lettura al totale
index = (index + 1); //Incrementa l'indice

if (index >= NUMREADINGS)
index = 0; //Alla fine dell'array resetta l'indice a 0

average = total / NUMREADINGS; //Calcola la media
Serial.println(average); //Stampa la media
}

 

 

Analisi codice:

1- i++; equivale a dire i: i = i + 1;

2- i–; equivale a dire i: i = i -1;

3- x += y; equivale a dire x = x + y;

4- x -= y; equivale a dire x = x – y;

5- x *= y; equivale a dire x = x * y;

6- x /= y; equivale a dire x = x / y;