Sensor ultrasónico se detiene al iniciar cronómetro.

Tengo un código que me imprime la distancia de un ultrasónico en una lcd de 16x2 mismo que también tiene un cronómetro que se activa y se pausa con un pulsador el problema es que al pulsar para que inicie el conteo del cronómetro el sensor ultrasónico se detiene solo queda la última distancia que calculo ya intente arreglar el problema pero no pude ya que lo que pensaba que era el problema no lo fue.
Les dejo el código a ver si me pueden decir cuál es el problema.

#include <LiquidCrystal.h>                //Incluimos la libreria que contiene las funciones del display LCD
const int trigger=8;
const int echo=9;
 
float distance;
 
int m, mu=0,md=0;                          //Declaramos las variables que vamos a usar
int s, su=0,sd=0;
int l, lu=0,ld=0,lc=0;
int pulsador,antes,despues;
long int tiempo,inicio;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);    //Configuramos las Entradas/Salidas a las que esta conectado el LCD

 void setup() {
 Serial.begin(9600);
 pinMode(trigger,OUTPUT);
 pinMode(echo,INPUT);
 lcd.begin(16,2);

 //////////////////////////
                                      
  pinMode(6, INPUT);                      //Ponemos el pin 6 como entrada para el Sensor START/STOP
  pinMode(7, INPUT);                      //Ponemos el pin 7 como entrada para el Pulsador RESET
  pinMode(10,OUTPUT);                     //Ponemos el pin 10 como salida para mandar la señal al zumbador
  antes=HIGH;                             //Ponemos la variable antes a HIGH
  despues=HIGH;                           //Ponemos la variable despues a HIGH
}
  
void loop() {
  if(digitalRead(7)==LOW){                //Si el pin 7 esta LOW
    analogWrite(10,100);                  //Mandamos una señal PWM con valor 100 al pin 10 (zumbador)
    lcd.setCursor(4, 4);                  //Nos ponemos en el LCD en la segunda linea caracter 5
    lcd.print("00:00:000");               //Escribimos 00:00:000 (Ponemos el cronometro a 0)
    delay(200);                           //Establecemos un retardo de 200ms
    analogWrite(10,0);                    //Apagamos el zumbador
  }
  despues=digitalRead(6);                 //Guardamos en la variable despues el valor del pin6 (sensor start/stop)
  if(despues==LOW&&antes==HIGH){          //Si el valor que tenia era HIGH y ahora tiene LOW sera porque lo hemos activado
    analogWrite(10,100);                  //Mandamos una señal PWM con valor 100 al pin 10 (zumbador)
    inicio=millis();                      //Guardamos en inicio el tiempo que se lleva ejecutando el programa hasta que
                                          //se activa el sensor start/stop
    antes=despues;                        //cambiamos el valor de la variable antes al que tiene la variable despues
    pulsador=0;                           //Ponemos la variable pulsador a 0
    delay(200);                           //Establecemos un retardo de 200ms
     
    while(pulsador==0){                   //Cuando la variable pulsador sea 0
      tiempo=millis()-inicio;            //Calculamos el tiempo que paso desde que se activo el sensor start/stop
       
      m=(tiempo/1000)/60;                 //Calculamos los minutos
      mu=m%10;                            //Descomponemos los minutos y sacamos el valor de las unidades
      md=(m-mu)/10;                       //Descomponemos los minutos y sacamos el valor de las decenas
       
      s=(tiempo/1000)%60;                 //Calculamos los segundos
      su=s%10;                            //Descomponemos los segundos y sacamos el valor de las unidades
      sd=(s-su)/10;                       //Descomponemos los segundos y sacamos el valor de las decenas
       
      l=(tiempo%1000);                    //Calculamos las milesimas de segundo
      lu=l%10;                            //Descomponemos las milesimas y sacamos el valor de las unidades
      ld=((l-lu)/10)%10;                  //Descomponemos las milesimas y sacamos el valor de las decenas
      lc=(l-(ld*10)-lu)/100;              //Descomponemos las milesimas y sacamos el valor de las centenas
       
      lcd.setCursor(4, 4);                //Ponemos el cursor en la linea 2 y el caracter 5
      lcd.print(md);                      //Imprimimos los valores en el display
      lcd.print(mu);              
      lcd.print(":");
      lcd.print(sd);
      lcd.print(su);
      lcd.print(":");
      lcd.print(lc);
      lcd.print(ld);
      lcd.print(lu);
 
      despues=digitalRead(6);             //Guardamos en la variable despues el valor del pin6 (sensor start/stop)
      analogWrite(10,0);                  //Apagamos el zumbador
      if(despues==LOW&&antes==HIGH){      //Si el valor que tenia era HIGH y ahora tiene LOW sera porque hemos activado
                                          //el sensor
        analogWrite(10,100);              //Mandamos una señal PWM con valor 100 al pin 10 (zumbador)
        antes=despues;                    //cambiamos el valor de la variable antes al que tiene la variable después
        pulsador=1;                       //Ponemos la variable pulsador a 1
        delay(200);                       //Establecemos un retardo de 200ms
        analogWrite(10,0);                //Apagamos el zumbador
      }
      antes=despues;                      //cambiamos el valor de la variable antes al que tiene la variable despues
    }
  }

  antes=despues;                          //cambiamos el valor de la variable antes al que tiene la variable despues
//////////////////////////////////////////////////////////////////////////////
 {
//Inicializamos el sensor
 digitalWrite(trigger,LOW);
 delayMicroseconds(5);
// Comenzamos las mediciones
// Enviamos una señal activando la salida trigger durante 10 microsegundos
 digitalWrite(trigger,HIGH);
 delayMicroseconds(10);
 digitalWrite(trigger,LOW);
// Adquirimos los datos y convertimos la medida a metros
 distance=pulseIn(echo,HIGH); // Medimos el ancho del pulso 
 // (Cuando la lectura del pin sea HIGH medira 
 // el tiempo que transcurre hasta que sea LOW
 distance=distance*0.0001657;
// Enviamos los datos medidos a traves del puerto serie y al display LCD
 Serial.println(distance);
 lcd.setCursor(0,0);
 lcd.print(distance);
 delay(100);
}
}