Faire la moyenne d'une distance

Bonjour , j'aurais besoins d'aide pour faire la moyenne de la distance obtenue tt les seconde et qu'elle soit obtenue dans le moniteur série merci d'avance

#include <Ultrasonic.h>
Ultrasonic ultrasonic(12, 13); // Trig et Echo
int trigPin = 12; // Trigger
int echoPin = 13; // Echo

void setup() {
Serial.begin(9600);
pinMode(12, OUTPUT);
pinMode(13, INPUT);

}

void loop () {

digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duree = pulseIn(echoPin, HIGH);
float distance = duree0.034/2;
distance=floor(10
distance+0.5)/10*0.01;
analogRead(nbdistance) ;

int distance2=distance*nbdistance/duree;

if(distance<5){
Serial.println(String(distance) + "m" + " | " + String(distance2));
delay(1);
}else{
Serial.println("Aucun obstacle");

}

}

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Bonjour et bienvenu...

Si tu veux que quelqu'un lise ton code, il faut le mettre en forme avec le bouton <code> de l'éditeur.
Et profite de l'attente d'une éventuelle réponse pour lire les bonnes pratiques du forum :wink:

Au plaisir d'échanger...

Faire une moyenne, c'est accumuler des échantillons et diviser cette somme par le nombre d'échantillons.

  • tu fais une petite boucle pour accumuler un certain nombre d'échantillons
  • en sortant de la boucle, tu fais la division par le nombre d'échantillons
  • tu affiches le résultat

Il y a deux manières d'envisager la moyenne, à choisir en fonction du besoin.

  • une série de n échantillons puis calcul de la moyenne, puis on reprends la série de n suivante pour le calcul de moyenne suivant
  • Moyenne glissante : on accumule les échantillons les uns à la suite des autres et on fait le calcul de la moyenne à chaque échantillon avec les N dernières valeurs. Quand on récupère l'échantillon K on supprime de la série l'échantillon K - N, etc.

Je pense qu'il vaut mieux commencer simple.

Ce n'est pas forcement compliqué sauf sur les N premières mesures (ou alors on accepte une précision douteuse sur ces premières mesures)
Mais c'est surtout la finalité qui fera le choix.

Il faudrait aussi que @abeltkn mette son code en forme comme demandé dans les bonnes pratiques du forum

Ne soyons pas aussi affirmatif. On peut aussi envisager une moyenne pondérée:
nouvelle moyenne = 5% nouvelle valeur + 95% de l'ancienne moyenne
Cela donne une moyenne plus lisse, qui peut être le résultat équivalent d'un tableau de grande dimension (si on choisit 1% et 99%) sans avoir une occupation mémoire conséquente, et un temps de calcul assez ridicule.
Si on veut une moyenne d'entiers de 1000 valeurs avec une nano, c'est un moyen d'y arriver.

Il y a aussi la moyenne qui Consiste à éliminer du calcul X% des valeurs les plus grandes et X% des valeurs les plus petites

Ou encore la médiane qui est une sorte de moyenne qui prends la valeur du milieu si les valeurs sont classées par ordre croissant ou décroissant.

Il y a aussi la moyenne géométrique qui consiste à prendre la racine Nième du produit des N valeurs. En classe, cette moyenne donne quasiment la même chose que la standard, mais un élève qui a eu un zéro à un devoir ne peut plus se rattraper!

On peut aussi faire la moyenne de toutes les moyennes :laughing: ... Sauf de cette dernière.

C'est indispensable pour qu'on puisse le lire, mais il serait aussi bon de savoir à quoi cela peut servir, quelle est la carte, sur combien de valeurs cela porte... cela permet de choisir la bonne moyenne.

Aucun doute on peut envisager bien d'autres manières de faire, en fonction de l'objectif recherché (dont on ne sait toujours rien)

Je simplifiais, et comme toujours, les simplifications c'est compliqué :wink:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.