Problema con sensor de distancias HC-SR04

Hola buenas,

He intentado montar un circuito con un sensor de distancia HC-SR04 de manera que detecte 4 distancias (50, 25, 10 y 1) y se vaya encendiendo un led por cada rango de distancia. Es decir, que en distancias entre 50cm y 25cm haya un led encendido, en distancias entre 25cm y 10 cm haya 2 leds encendidos, entre 10cm y 1cm haya 3 leds encendidos y en distancias inferiores estén los 4 leds encendidos. Además cuando la distancia sea inferior a 1cm también suene un piezo (buzzer). El problema es que el HC-SR04 no me reconoce la distancia. He colocado un bloque void monitoriza() para que se imprima en el monitor la distancia que esté detectando y así poder ver si funciona correctamente el HC-SR04

Os adjunto este enlace a Tinkercad con el circuito simulado. Ademas he adjuntado en este mensaje una captura de pantalla con el circuito simulado

long distancia;
long tiempo;
int led1=4;
int led2=5;
int led3=6;
int led4=7;
int buzzer=8;

void setup()
{
  pinMode(2, OUTPUT);
  pinMode(3, INPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  digitalWrite(2, LOW);
  delayMicroseconds(5); 
  digitalWrite(2, HIGH);
  delayMicroseconds(10); 
  tiempo= pulseIn(3, HIGH);
  distancia= int(0.017*tiempo);
  monitoriza();
  
  if (distancia<=50 && distancia>25){
    digitalWrite (led1, HIGH);
    digitalWrite (led2, LOW);
    digitalWrite (led3, LOW);
    digitalWrite (led4, LOW);
    noTone(buzzer);
  }
  if (distancia<=25 && distancia>10){
    digitalWrite (led1, HIGH);
    digitalWrite (led2, HIGH);
    digitalWrite (led3, LOW);
    digitalWrite (led4, LOW);
    noTone(buzzer);
  }
  if (distancia<=10 && distancia>1){
    digitalWrite (led1, HIGH);
    digitalWrite (led2, HIGH);
    digitalWrite (led3, HIGH);
    digitalWrite (led4, LOW);
    noTone(buzzer);
  }
  if (distancia<=1){
    digitalWrite (led1, HIGH);
    digitalWrite (led2, HIGH);
    digitalWrite (led3, HIGH);
    digitalWrite (led4, HIGH);
    tone(buzzer, 1000);
  }
  else {
    digitalWrite (led1, LOW);
    digitalWrite (led2, LOW);
    digitalWrite (led3, LOW);
    digitalWrite (led4, LOW);
    noTone(buzzer);
  }
  delay(1000);
}
void monitoriza()
 {
 Serial.print("Distancia: ");
 Serial.println(distancia);
 }

Agradezco vuestra ayuda para detectar el problema

Moderador:
Por favor lee y luego edita como se hace visible un archivo de imagen adjunto usando la guía que está al final de las normas del foro.
Los títulos y/o cuerpo de mensaje no deben escribirse con mayúsculas. Hacerlo es como gritar, por eso edité tu título.

Que quieres decir con no reconoce la distancia? No mide nada?
Porque no pruebas con NewPing.h usando este ejemplo?

#include <NewPing.h>

#define TRIGGER_PIN  2  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN       3  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup() {
  Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
}

void loop() {
  delay(50);                      // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
  unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS).
  Serial.print("Ping: ");
  Serial.print(uS / US_ROUNDTRIP_CM); // Convert ping time to distance in cm and print result (0 = outside set distance range)
  Serial.println("cm");
}

Finalmente un llamado de atención o advertencia.
Hablas de medir por debajo de 1 cm y cuando miro las especificaciones del sensor dice

Rango de medición: 2cm a 450cm
Precisión: +- 3mm

Detengámonos en ese valor mínimo de lectura:2cm que no tengo porque dudar pero yo sería un poco mas cuidadoso y en todo caso probaría como se comporta el sensor y si es confiable y estable a esa distancia entonces usaría alguna orden al respecto.

Digamos que esto

if (distancia<=1){

no tiene mucho sentido y la condición anterior entre 10 y 1 ya sabes qué esperar.