?como dar mayor tiempo para que se conecte un sensor PIR HC-SR501 ?

Hola Amigos
Estoy haciendo un proyecto,para conectar una alarma con una tarjeta Rfid y que se conecten posteriormente los sensores Pir.
Mi problema es con respecto a dar un mayor tiempo de conexión a los sensores Pir,para que pueda salir de la casa y lo mismo al regresar.
Puse delay(30000) posteriormente que se permite el acceso con la tarjeta y funciona al salir ,pero no me al regresar a la casa ,no me da tiempo para desconectar ,ya que empieza a funcionar la alarma.
Ojala me puedan ayuda

Saludos

// sistema de alarma con Rfid y sensor de movimiento PIr (jmr)
#include <MFRC522.h>
#include <SPI.h>

//#include <Wire.h> 

int posicion=0;
/*
Pins	SPI	   UNO  
1 (NSS) pin10 (SS)   10    
2       SCK        13   
3       MOSI       11    
4       MISO       12   
5       IRQ        *      
6       GND       GND    
7       reseteo        9      
8      +3.3V (VCC) 3V3   
* Not needed
1 on ICPS header
*/
#define pin10 10
#define reseteo 9
MFRC522 nfc(pin10, reseteo);
#define pin4 4
#define pin5 5
#define pin6 6
#define Buzzer 7
const int buzzer = 7;

int pirState = LOW;           // de inicio no hay movimiento

/// SENSORES
const int PIRPin0 = 8;        // pin1 de entrada (for PIR sensor)
const int PIRPin = 2;         // pin2 de entrada (for PIR sensor)
const int PIRPin1 = 3;        // pin3 de entrada (for PIR sensor)
int vat0 = 0;                  // estado del pin0
int vat  = 0;                  // estado del pin1
int vat1 = 0;                  // estado del pin2    
// TERMINA SENSORES
   
int val2 = 0; 
int val3 = 0;
void setup() {
   pinMode(buzzer, INPUT);
   pinMode(PIRPin0  , INPUT); // PIN1
   pinMode(PIRPin1  , INPUT); // PIN2
   pinMode(PIRPin, INPUT);   // PIN3
   pinMode(pin4  , OUTPUT); 
   pinMode(pin5  , OUTPUT); 
   pinMode(pin6, OUTPUT);
  
   SPI.begin();
   Serial.begin(115200);
  // Comprueba el lector RFID
   nfc.begin();
   byte version = nfc.getFirmwareVersion();
   if (! version) {
    Serial.print("Error al buscar lector MFRC522 ");
    while(1); //halt
   }
    
//   Serial.print("BUSCANDO CHIP MFRC522 ");
   Serial.print("RC522 Soft ");
   Serial.println(version);
//   Serial.println(".");
}

#define key1 1 
#define key2 1 
// Agregar aquí las tarjetas autorizadas
byte Autorizado[key1][4] = {{0x74, 0x5C, 0xD6, 0x5F, }};
byte Autorizado2[key2][6] = {{0xD3, 0x99, 0xE, 0xED, 0xFF, 0xFF, }}; 

void claveTarjeta(byte *serial);
boolean esIgual(byte *key, byte *serial);
boolean chekaKey(byte *serial);

void loop() {
  ;
  vat0 = digitalRead(PIRPin0);
  vat  = digitalRead(PIRPin);
  vat1 = digitalRead(PIRPin1);
  
  byte status;
  byte data[MAX_LEN];
  byte serial[5];
  boolean Abierto = false;
  status = nfc.requestTag(MF1_REQIDL, data);
 //////// sensor
 

  if (val2==1)
   {
 
   if (vat or vat1 or vat0  == HIGH)   //si está activado
   { 
      pirState = HIGH;
      digitalWrite(pin6, HIGH);  //LED ON// color amarillo
    
        delay(1000);
        digitalWrite(pin6, LOW);  //LED ON
      if (pirState == LOW)  //si previamente estaba apagado
      {
        Serial.println("Sensor activado");
        pirState = HIGH;
        
      }
   } 
   else   //si esta desactivado
   {
      digitalWrite(pin6, LOW); // LED OFF
      if (pirState == HIGH)  //si previamente estaba encendido
      {
        Serial.println("Sensor parado");
        pirState = LOW;
      }
   }
}


        /// termina

 
  if (status == MI_OK) {
    status = nfc.antiCollision(data);
    memcpy(serial, data, 5);    
    if(chekaKey(serial)){ 
      val2=1;
      
        Serial.println("Acceso permitido");
       claveTarjeta(serial);
        Abierto = true;
        digitalWrite(pin4, HIGH);  //LED ON color rojo
         tone(buzzer, 1000); // envia 1KHz de señal de sonido.
        delay(1000);
         noTone(buzzer);     // para el sonido.
        digitalWrite(pin4, LOW);  //LED ON
        delay(1000); 
 
        
           val3=val3+1;
          
         
         if (val3 == 2)// si la tarjeta rfid pasa por segunda vez se desconecta la alarma
        {
         
          
          val2=0;
          val3=0;
          pirState = LOW;
          digitalWrite(pin5, HIGH);  //LED prendido color azul
          delay(1000);        
          digitalWrite(pin5, LOW);  //LED apagado
          
         } 
   
      
    }else{ 
      claveTarjeta(serial);
      Serial.println("Tarjeta desconocida");
      Abierto = false;
      digitalWrite(pin5 , LOW);
      digitalWrite(pin6, HIGH);
    }    
    nfc.haltTag();

  }
  delay(500);
}
     
boolean esIgual(byte *key, byte *serial){
    for (int i = 0; i < 4; i++){
      if (key[i] != serial[i]){ 
        return false; 
      }
    }    
    return true;
  }
//Chequea si la calve es la correcta si es asi devuelve un verdadero
boolean chekaKey(byte *serial)
{
    for(int i = 0; i<key1; i++)
    {
      if(esIgual(serial, Autorizado[i]))
        return true;
    }
      for(int i = 0; i<key2; i++)
    {
      if(esIgual(serial, Autorizado2[i]))
        return true;
    }
    
   return false;
}
//Muestra la clave de la tarjeta en el puerto serie
void claveTarjeta(byte *serial)
{
    for (int i = 0; i < 4; i++) {
      Serial.print(serial[i], HEX);
      Serial.print(" ");
      
    }
   
}