croquis Smoothing

Bonjour à tous,

Je suis nouveau sur arduino, j’apprends les base à travers différent livre et tuto, et j'ai une question concernant le croquis "smoothing " https://www.arduino.cc/en/Tutorial/Smoothing

ma question concerne cette ligne de code : "total = total - readings[readIndex]"

pourquoi doit-on soustraire la dernière lecture ?

Le tableau est initialisé avec une valeur 0 dans le setup () et à chaque tour dans loop() on lui assigne une nouvelle valeur avec analogRead(inputpin). Pourquoi on doit soustraire la dernier lecture pour faire une moyenne ?

Pour faire la moyenne il suffit normalement d'avoir la sommes des dix valeurs et de diviser cette somme par 10, alors pourquoi cette opération de soustraction de la dernière lecture.

je vous remercie d'avance pour votre éclairage. :slight_smile:

De ce que je comprends de ce code (un peu tordu il est vrai), ce n’est pas la dernière valeur qu’il enlève :

  • Si on vient de calculer la moyenne, la valeur enlevée est la première (readIndex vaut alors 0)
  • Si on est en train de faire les lectures, il soustrait la valeur suivante (car il vient de faire readIndex = readIndex + 1) mais il ajoute ensuite la valeur courante (il fait donc un remplacement)
    En gros, au lieu de faire un registre à décalage (en expulsant la valeur la plus ancienne, puis décalant tout vers la gauche et ajoutant la nouvelle valeur), il remplace une valeur d’indice variant entre 0 et numReadings-1. Pour calculer la somme, il soustrait l’ancienne valeur remplacée et ajoute la nouvelle.

On retire de la somme la valeur la plus ancienne de la liste et on y ajoute la nouvelle valeur
On remplace la plus ancienne valeur dans la liste par la nouvelle arrivée.
Ce système est souvent utilisé car il permet de ne pas avoir à recalculer la somme à chaque itération.

Merci pour vos explications, je comprend mieux :slight_smile: