Salve signori!
allora vediamo un attimo.. ripartendo dalla risp di Docsavage..
Sicuramente, il codice proposto è validissimo, magari non fa la media delle ultime misurazioni assolute perchè è influenzata dalle medie precedenti, però è sicuramente molto interessante, potrei adottare la tua soluzione.
detto questo, provo a rispondere alle tue domande, così vediamo se ho capito
quando mi dici
"for i=0;i<9;i++;
perchè minore di 9 e non 10?"
sicuramente dovevo scrivere 10 perchè l'arrary, essendo valori[9] è costituito da 10 elementi, anche se in realtà il mio array è valori[5], quindi di 6 elementi.
quando mi dici
media=media+(valori*=valori[i+1]);*
-da una parte si usa "i" perchè si riferisce ai valori dentro l'array
-dall'altra si usa "i+1" perchè indica l'incremento del numero di campionamenti, che saranno 6, cioè 5(che è il nome dell'array ma che siccome esiste anche l'indice 0 bisogna aggiungere 1 per ottenere 6 valori), ( vuol dire quello?)
se leggo da sx a dx leggo così:
la media è data dal valore precedente della media (ad esempio dichiaro che all'inizio è=0), poi viene sommata a tutti i valori memorizzati nell'array, cioè i 6 valori (5+1);
se leggo da dx a sx leggo così:
l'array di nome valori che è formato da valori[i+1], quindi 6 campionamenti, si somma alla media precedente per ottenere la media attuale. sarà così? questo mi sembra di aver capito...
per la dicitura:
media=media+(valori[9]=analogRead(A0));
a partire da destra leggo:
la lettura analogica del pin A0, che mi costruisce l'array di 10 elementi chiamato valori[9], lo sommo alla media precedente per ottenere la media attuale.
ABBIATE PIETA' DI ME
sto cercando di ragionare...
Sukkopera, quando mi dici
Ecco, appunto, così è di 5 elementi...
ma se io scrivo valori[5], non ha 6 elementi, cioè index0, index1, index2, index3, index4, index5?
Docsavage
quando mi dici
Ostia... ecc ecc
quello che è scritto nel for viene ripetuto tante volte quante volte sono indicate nel confronto, questo credo di averlo capito bene, quindi viene letto un analogRead ad esempio 6 volte nel caso
for (i=0;i<5;i++); ma non capisco a cosa ti riferisci esattamente...
"che ti interessa ripetere una divisione per calcolare una media, se NON hai ancora finito di fare la somma?"
in effetti, la divisione devo scriverla fuori dalla graffa di chiusura del ciclo precedente, tipo:
```
*somma=0;
for (int i=0;i<6;i++) {
somma= somma+misure[i];
}
media=somma/6;
[code]
così prima calcola la somma e poi, una volta uscito dal for, calcola la media,giusto?
_```*_