Problema con delay

Salve , sto realizzando un sistema con sensore di prossimità che in base ad un valore di distanza mi preme ctrl+p per far partire il video .

const int triggerPort = 9;
const int echoPort = 10;
const int led = 13;
char ctrlKey = KEY_LEFT_CTRL; //for windows and lunix
void setup() {
 
  pinMode(triggerPort, OUTPUT);
  pinMode(echoPort, INPUT); 
  pinMode(led, OUTPUT);
  Serial.begin(9600);
  Serial.print( "Sensore Ultrasuoni: ");
 Keyboard.begin();
}
 
void loop() {
 
  digitalWrite( triggerPort, LOW );
  digitalWrite( triggerPort, HIGH );
  delayMicroseconds( 10 );
  digitalWrite( triggerPort, LOW );
 
  long durata = pulseIn( echoPort, HIGH );
 
  long distanza = 0.034 * durata / 2;
 
  Serial.print("distanza: ");
 
  if( durata > 57000 ){
    Serial.println("Fuori portata   ");
  }
  else{ 
    Serial.print(distanza); 
    Serial.println(" cm     ");
  }
  
  if (distanza<100) {   //se la distanza è minore di 100cm premi ctrl+p
      digitalWrite(led , HIGH);
      Keyboard.press(ctrlKey);
      Keyboard.press('p');
      delay(100);
      Keyboard.releaseAll();
      delay(900000);
    }
  delay(1000);
}

come si vede nel codice metto un delay di 900000 =durata del video da vedere , vorrei inserire un controllo in caso si prema stop al video prima dei 900000 secondi .
c’è un modo per riavviare lo sketch o di sovrascrivere il delay ?

Si usando un millis() invece che un delay()

http://www.leonardomiliani.com/2013/programmiamo-i-compiti-con-millis/