Problema con sensori ad ultrasuoni...

Il mio problema è il seguente:
Devo usare dei sensori ad ultrasuoni in una stanza più grande di 5 metri, ciò comporta che i sensori HC-SR04 e HC-SR05 non coprono tutta la distanza. Ciò poco m'importa. Il problema sorge quando, anzi che darmi "Fuori portata", come da programma, spesso mi da altri valori come per esempio 4 cm o 5 ecc.
Vi mostro il programma, sapreste dirmi come risolvere il problema?
Grazie 1000 in anticipo! =D

const int triggerPort = 3;
const int echoPort = 7;
 
void setup() {
 
pinMode(triggerPort, OUTPUT);
pinMode(echoPort, INPUT);
Serial.begin(9600);
Serial.print( "Sensore Ultrasuoni: ");
}
 
void loop() {
 
//porta bassa l'uscita del trigger
digitalWrite( triggerPort, LOW );
//invia un impulso di 10microsec su trigger
digitalWrite( triggerPort, HIGH );
delayMicroseconds( 10 );
digitalWrite( triggerPort, LOW );
 
long durata = pulseIn( echoPort, HIGH );
 
long distanza = 0.034 * durata / 2;
 
Serial.print("distanza: ");
 
//dopo 38ms è fuori dalla portata del sensore
if( durata > 38000 ){
Serial.println("Fuori portata   ");
}
else{ 
Serial.print(distanza); 
Serial.println(" cm     ");
}
delay(1000);
}

Il problema non credo sia sw
Sono i sensori che danno valori sbagliati saltuariamente

Potresti fare N letture sequenziali (per esempio N = 10), eliminare le due letture più alte e le due più basse, e infine fare la media delle 6 letture che ti rimangono.

In questo modo hai un risultato abbastanza preciso e che "tollera" delle imprecisioni saltuarie del sensore..

non ho esperienza con i sensori a ultrasuoni ma da quello che ogni tanto leggo nel forum questi sensori possono soffrire di riflessioni secondarie, io finora a livello professionale li ho visti impiegati all’aperto

esatto come ha detto stefa l’ultrasuoni è una cosa su cuui non puoi fare troppo affidamento…dipende ovviamente da cosa devi fare.
Però dalla domanda mi sembra che vuoi sapere come leggere attraverso l’HCsr04 distanze superiori ai 4 metri NON LO PUOI fare.
Se guardi il datasheet dei componenti che ha sopra forse puoi trovare un modo per smanettarci e ottenere quello che vuoi tu.
Ma prendendo in mano l’ oggetto così com’è non c’è niente da fare.

Grazie a tutti, a questo punto mi viene da pensare se questo sia un problema legato al fatto che sono sensori da 2,50 euro o sia un problema legato a tutti i sensori ad ultrasuoni… Proverò a fare qualcosa tipo quello che proponeva ale.luffa.

P.S.

Lucailvec:
Però dalla domanda mi sembra che vuoi sapere come leggere attraverso l’HCsr04 distanze superiori ai 4 metri NON LO PUOI fare.

Lucailvec, grazie ma non ero interessato a leggere distanze superiori ali 4 m, bensì avere una migliore stabilità dei sensori.

Le onde sonore sono sferiche, si propagano in tutte le direzioni a partire dalla sorgente. Se pensi di misurare un oggetto a 2 metri di fronte a te sbagli dato che potresti anche rilevare un oggetto spostato di qualche metro.
I sensori ad ultrasuoni supercinesissimi non sono poi molto affidabili.

Vanno bene come sensori di prossimità, non per le lunghe distanze.