#define trig 22
#define echo 23
int microsprevios ;
int tiempomax = 30000;
int tiempoDoble;
byte uni, dec, cen, um, dm, cm, m;
long dist, dist_t;
//lcd

void setup() {
  Serial.begin(115200);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
}

void loop() {
  digitalWrite(trig, LOW);
  delayMicroseconds(2);
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  
  microsprevios = micros();

  // Cambiado de !digitalRead(echo) == LOW a digitalRead(echo) == HIGH
  while (digitalRead(echo) == LOW && (micros() - microsprevios) <= tiempomax) {
    // Espera a que el pin echo sea HIGH
  }

  microsprevios = micros();
  
  // Cambiado de digitalRead(echo) == HIGH a digitalRead(echo) == LOW
  while (digitalRead(echo) == HIGH && (micros() - microsprevios) <= tiempomax) {
    // Espera a que el pin echo sea LOW
  }

  tiempoDoble = micros() - microsprevios;
  dist = tiempoDoble / 58.32;  // Fórmula para calcular la distancia en centímetros
  
  uni = dist % 10;
  dist_t = dist / 10;
  dec = dist_t % 10;
  dist_t = dist_t / 10;
  cen = dist_t % 10;
  dist_t = dist_t / 10;
  um = dist_t % 10;
  dist_t = dist_t / 10;
  dm = dist_t % 10;
  dist_t = dist_t / 10;
  cm = dist_t % 10;
  m = dist_t / 10;

  Serial.print("Distancia: ");
  Serial.print(m);
  Serial.print(cm);
  Serial.print(dm);
  Serial.print(um);
  Serial.print(cen);
  Serial.print(dec);
  Serial.print(uni);
  Serial.println(" cm");
  
  delay(1000);
}