Mejorar presision del HC-SR04

Hola tengo un problema, estoy utilizando el sensor HC-SR04 para encontrar obstáculos y algunas veces me da falsas mediciones! como puedo solucionar esa parte, alguna forma de mejorar las mediciones comparando datos o algo asi?

int pingPin = 5; 
int entradaPin = 6;

int ledRojo = 2; //LED rojo va en pin 5


/*Con esta variable podremos encender el LED rojo cuando
la distancia sea demasiado corta, puede ser
cambiada con solo cambiar el valor, ese valor esta en cm
*/
int zonaSegura = 100;

void setup(){
  
  //Inicializamos los pines como entradas y salidas
  pinMode(pingPin, OUTPUT);
  pinMode(ledRojo, OUTPUT);
  pinMode(entradaPin, INPUT);
  

  
}

void loop(){
  
  //Creamos 2 variables, una para la duracion y otra para la distancia
  long duracion, distanciaEnCm;
  
  /*
  Hacemos un pulso bajo-alto-bajo para encender el sensor
  Al encender y apagar esperamos en microsegundos, de esta
  manera enviaremos nuestra primer onda
  */
  digitalWrite(pingPin, LOW); // Envía un pulso bajo
  delayMicroseconds(2);       // Espera dos microsegundos
  digitalWrite(pingPin, HIGH);// Envía un pulso alto
  delayMicroseconds(5);       // Espera 5 microsegundos
  digitalWrite(pingPin, LOW); // Se queda en espera
  
  /*Obtenemos la duracion de tiempo mientras
  el sensor este recibiendo la informacion
  */
  duracion = pulseIn(entradaPin, HIGH);
  
  /*
  Convertimos la duracion del tiempo a distancia
  La velocidad del sonido es de 340metros/segundo que 
  es igual a 29 microsegundos por centimetro es por es
  que vamos a dividir la duracion entre 29. 
  Despues se divide entre 2 porque es el tiempo que viaja
  el sonido de ida y de vuelta, solo queremos un valor pero
  ambos son iguales, es por eso que solo dividimos
  entre 2
  */
  distanciaEnCm = (duracion/29)/2;
  
  //Imprimimos la distancia en consola

  
  /*Prendemos los LED's, cuando la distancia es
  mayor a la zona segura se prende el LED verde y
  se apaga el rojo. Cuando la distancia es menor
  a la zona segura se prende el LED rojo y se apaga el LED
  verde
  */
  if(distanciaEnCm > zonaSegura){
     delay(100); 
    digitalWrite(ledRojo, LOW);
      
  }
  else{
    
    delay(100);
    digitalWrite(ledRojo, HIGH);
    
  }
  

  
}

que son falsas mediciones, Cuando no detecta nada?

surbyte:
que son falsas mediciones, Cuando no detecta nada?

acciona mi mecanismo cuando no hay nada en frente ningún objeto, habría alguna forma de hacer un promedio de los datos para ver si no es una medición errónea o algo parecido?

Cuando no hay nada que dice tu código, que reporta via Serial?
Trata de entender la causa de tu problema, un promedio no resuelve nada.

surbyte:
Cuando no hay nada que dice tu código, que reporta via Serial?
Trata de entender la causa de tu problema, un promedio no resuelve nada.

Pues en el monitor muestra que por unos instantes detecta un objeto 100, 100, 100, 73, 100, 100. siendo esto un error ya que no hay ningún objeto en frente, y esa lectura hace encender el led, cosa que solo tiene que pasar cuando en verdad haya un objeto... me explico?

Y porque no usas la libreria disponible en lugar de tu código?
Arduino NewPing Library

Tiene ejemplos, pruébalos y luego nos cuentas si sigue mal o no.

surbyte:
Y porque no usas la libreria disponible en lugar de tu código?
Arduino NewPing Library

Tiene ejemplos, pruébalos y luego nos cuentas si sigue mal o no.

Ya lo estuve probando y me sigue dando ese error amigo!, por unos instantes hace una medición equivocada. buscando por internet me encontré que los potenciometros también tienen un problema parecido

y mi idea es tratar de realizar el mismo método de la pag. para minimizar errores.