Ayuda con programacion sensor ultrasonico que activara un aparato electrico

Necesito que el sensor al momento de detectar un objeto o persona fuera de la zona segura que en este caso es de 10 cm , vuelva a hacer un sensado pero dentro de un tiempo de 2 minutos , sin alentar el sensado que se hace cada segundo , que solo cuando se dectecte algo se atrase 2 minutos

Esto es lo que tengo hasta ahora , mi unico problema es el de poner los 2 minutos cuando se detecta algo:

int pingPin = 9; //Pin que emite los sonidos, Trig

int entradaPin = 8; //Pin que va a recibir de vuelta la onda

int ledRojo = 7; //LED rojo va en pin 5
int ledVerde = 5; //LED verde va en pin 7

/*Con esta variable podremos encender el LED rojo cuando
la distancia sea demasiado corta, puede ser
cambiada con solo cambiar el valor, ese valor esta en cm
*/
int zonaSegura = 10;

const int pausa = 1000;
void setup(){

//Inicializamos los pines como entradas y salidas
pinMode(pingPin, OUTPUT);
pinMode(ledRojo, OUTPUT);
pinMode(ledVerde, OUTPUT);
pinMode(entradaPin, INPUT);

Serial.begin(9600); //Inicializamos la comunicacion serial

}

void loop(){
{
}

{
}

//Creamos 2 variables, una para la duracion y otra para la distancia
long duracion, distanciaEnCm;

/*
Hacemos un pulso bajo-alto-bajo para encender el sensor
Al encender y apagar esperamos en microsegundos, de esta
manera enviaremos nuestra primer onda
*/
digitalWrite(pingPin, LOW); // Envía un pulso bajo
delayMicroseconds(2); // Espera dos microsegundos
digitalWrite(pingPin, HIGH);// Envía un pulso alto
delayMicroseconds(5); // Espera 5 microsegundos
digitalWrite(pingPin, LOW); // Se queda en espera

/*Obtenemos la duracion de tiempo mientras
el sensor este recibiendo la informacion
*/
duracion = pulseIn(entradaPin, HIGH);

/*
Convertimos la duracion del tiempo a distancia
La velocidad del sonido es de 340metros/segundo que
es igual a 29 microsegundos por centimetro es por es
que vamos a dividir la duracion entre 29.
Despues se divide entre 2 porque es el tiempo que viaja
el sonido de ida y de vuelta, solo queremos un valor pero
ambos son iguales, es por eso que solo dividimos
entre 2
*/
distanciaEnCm = (duracion/29)/2;

//Imprimimos la distancia en consola
Serial.print(distanciaEnCm);
Serial.print("cm");
Serial.println();

/*Prendemos los LED's, cuando la distancia es
mayor a la zona segura se prende el LED verde y
se apaga el rojo. Cuando la distancia es menor
a la zona segura se prende el LED rojo y se apaga el LED
verde
*/

if(distanciaEnCm > zonaSegura){

digitalWrite(ledVerde, HIGH);
delay(1);
digitalWrite(ledRojo, LOW);

}
else{

digitalWrite(ledVerde, LOW);
delay(100);
digitalWrite(ledRojo, HIGH);

}

//Hacemos un delay antes de volver a sensar
delay(5000);

delay(pausa);
}

no entiendo la parte de que cuando detecte ! algo se atrase 2 minutos ?

mafesolutions:
no entiendo la parte de que cuando detecte ! algo se atrase 2 minutos ?

mafesolutions:
no entiendo la parte de que cuando detecte ! algo se atrase 2 minutos ?

Me refiero que cuando el sensor detecte al objeto cercano active lo que vendria siendo el aparato(led) y que despues de eso , haya una pausa de 2 minutos para que vuelva a empezar el proceso

si entendi lo que masomenos queres tenes que cambiar en la funcion delay de abajo la cantidad de minutos que queres en formato de milisegundos que serian 60.000

Codigo Original

     digitalWrite(ledRojo, HIGH);
    
   
  }
 

  //Hacemos un delay antes de volver a sensar
  delay(5000);
   
delay(pausa);
}

Primero quiero hacerte una recomendación y es que con los delay "delay(5000)" y "delay(pause)" estas haciendo una pausa de 6 segundos, si dentro de estos 6 segundos se encuentra un objeto y/o persona fuera de la zona segura, no se detectará ninguna novedad, te sugiero que disminuyas ese tiempo. En relación a la pausa de 2 minutos, se tiene que agregar un delay dentro del if así:

Codigo modificado.

 if(distanciaEnCm > zonaSegura){
  
    digitalWrite(ledVerde, HIGH);
    delay(1);
     digitalWrite(ledRojo, LOW);
delay(120000)
   
  }
  else{

    digitalWrite(ledVerde, LOW);
   delay(100);
     digitalWrite(ledRojo, HIGH);
    
   
  }
 

  //Hacemos un delay antes de volver a sensar
  delay(5000);
   
delay(pausa);
}

Como no se necesita hacer algo más mientras ese tiempo, se puede usar perfectamente el delay.