sensore HC-SR04

Salve a tutti,
mi accade qualcosa che non so spiegare,

il codice che uso è

#define echoPin 7 // Echo Pin
#define trigPin 8 //Trigger Pin


int maximumRange = 200; 
int minimumRange = 0; 
long duration, distance; 

void setup() {
 Serial.begin (9600);
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);

}

void loop() {

 digitalWrite(trigPin, LOW); 
 delayMicroseconds(10); 

 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10); 
 
 digitalWrite(trigPin, LOW);
 duration = pulseIn(echoPin, HIGH);
 

 distance = duration/58.2;
 
 if (distance >= maximumRange || distance <= minimumRange){

 Serial.println("no object");

 }
 else {

 Serial.println(distance);

 }
 
 //Delay 50ms before next reading.
 delay(150);
}

posiziono il sensore HC-SR04
dinanzi ad un muro
e mi restituisce costantemente una certa distanza,
ad esempio 37 cm
a random mi da per una frazione di secondo un numero notevolmente inferiore come 5 cm
e poi ritorna a darmi 37 cm,
questa prova l’ho fatta molte volte,
non c’è tra il sensore e il muro altro che può disturbare per una frazione di secondo
la misurazione,
cosa posso fare per ovviare?

Grazie

Io preferisco usare la libreria NewPing, con quella non ho mai avuto problemi.

Per ovviare al problema di "false misurazioni" puoi provare a calcolare una media delle ultime 5-6-7-8 (a tua scelta) misurazioni ed utilizzare quella come dato misurato.

Ovviamente avrai meno precisione e reattività del sensore.