Como fazer o sensor ultrassônico detectar a presença apenas uma vez

Bom dia! Estou com problemas no código para que o sensor ultrassônico seja lido apenas uma vez enquanto detectar presença e depois de um tempo volte a detectar.

// INCLUSÃO DE BIBLIOTECAS
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#include <NewPing.h>

// DEFINIÇÕES DE PINOS
#define pinRx 10
#define pinTx 11

define ligat 8// PINO QUE ATIVA INTERRUPÇAO DO ARDUINO 2 MENSAGEM BOAS VINDAS APROXIME

#define TRIGGER_PINT 6 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PINT 9 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCET 100 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

int a = 0;
static unsigned long tempo =0;
// DEFINIÇÕES
#define volumeMP3 30

#define DEBUG
// INSTANCIANDO OBJETOS
SoftwareSerial playerMP3Serial(pinRx, pinTx);
NewPing sonar2(TRIGGER_PINT, ECHO_PINT, MAX_DISTANCET); // NewPing setup of pins and maximum distance.
DFRobotDFPlayerMini playerMP3;
const byte interruptPin = 2;
int dist2 = 0;
void sens2(); //função para leitura sensor
void ruim();

// DECLARAÇÃO DE FUNÇÕES

void setup() {
Serial.begin(9600);
playerMP3Serial.begin(9600);

pinMode (ligat , OUTPUT);
digitalWrite(ligat, HIGH);

Serial.println();
Serial.println(F("Iniciando DFPlayer ... (Espere 3~5 segundos)"));

if (!playerMP3.begin(playerMP3Serial)) { // COMUNICAÇÃO REALIZADA VIA SOFTWARE SERIAL
Serial.println(F("Falha ao iniciar:"));
Serial.println(F("1.Confira as conexões!"));
Serial.println(F("2.Confira o cartão SD!"));
while(true){
delay(0);
}
}

#ifdef DEBUG
Serial.println("Fim Setup");
#endif
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), ruim, RISING);

}

void loop() {
sens2();

}
void sens2()
{
delay(50); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
int dist2 = sonar2.ping_cm(); // Send ping, get distance in cm and print result (0 = outside set distance range)
if((dist2 >5) && (dist2< 8))
{
while(!a==1){

digitalWrite(ligat,LOW);
delay (200);
digitalWrite(ligat, HIGH);
delay(2300);
digitalWrite(ligat,LOW);
delay (100);
digitalWrite(ligat, HIGH);
delay(100);
playerMP3.playFolder(2, 2);
Serial.println("SENS");
delay(5000);
a=1;
unsigned long tempo = millis();
}

}
if (millis()-tempo >= 15000){
a=0;
tempo = millis();
}

}

void ruim()
{
playerMP3.playFolder(2, 2);
Serial.println("SENS2");
delayMicroseconds(5000000);

}

O que tem de errado nesse código? Me ajudem por favor.