PRENDER Y APAGAR BUZZER CON MANDO INFRAROJO

CORDIAL SALUDO
me encuentro en un dilema ya que he realizado las pruebas con el mando infrarojo pero al activarse el buzzer que quiero que suene por mucho tiempo y luego apagarlo con el mando infrarojo tengo que esperar que pase todo el delay para poder apagarlo .no quiero que suceda esto quiero que lo pueda apagar en cualquier momento

#include <Arduino.h>
#include <NECIRrcv.h>
#define IRPIN 2 // pin that IR detector is connected to
int pinBOCINA=12;
long r=0;
int v1=0;

int vl1=0;

int led = 3;
static int aux = 1;
NECIRrcv ir(IRPIN) ;

void setup(){
pinMode(8,INPUT);
pinMode(12,OUTPUT);
pinMode(led, OUTPUT);
ir.begin() ;
}

void a(){
v1=digitalRead(8);
vl1=analogRead(A0);

if(v1==HIGH){

if(vl1<=150){

digitalWrite(12,LOW);

}

else if(vl1>=160){
digitalWrite(12,HIGH);
delay(10000);

}
else{

digitalWrite(12,HIGH);
delay(10000);

}
}

else if(v1==LOW){

digitalWrite(12,LOW);
}
}

void g ()
{
Serial.begin(9600);

Serial.print ("valor1 ");
v1 = analogRead(A0);// primero se lee el valor del bton
Serial.println(v1);
delay(700);
}
void IR()
{
unsigned long ircode ;
while (ir.available()) {
ircode = ir.read() ;
if(ircode == 3322185710){
if(aux == 0){
digitalWrite(led, LOW);
aux = 1;
}
else{
digitalWrite(led, HIGH);
aux = 0;
}
}
}
}

void loop (){
g();
a();
IR();

}

por favor introduce las etiquetas de code y transporta tu post a el apartado software

Tú te has respondido casi.
Tienes la bocina activa durante 10 segundos, y congelas todo con el delay. Con eso no hay nada que hacer.

Activa la bocina, inicia un control de tiempo y devuelve el flujo al loop

En el loop puedes controlar el tiempo pasado desde la activación, y si es mayor de 10 segundos, la desactivas.

Así también podrás meter en el loop un control de que si hay tecla del IR pulsada la desactive.