Controlador de 2 push y un led

Hola estoy haciendo un proyecto sencillo pero me ah costado un poco de trabajo, necesito que con un boton se encienda un relay(o led) y luego con otro boton diferente se apague, ademas que si se presiona mas de 4 veces seguidas deje de encender y apagar por 5 minutos.

Anexo el codigo que tengo, no soy bueno con la programacion:

const int LED =5;
const int BOTON = 2;
const int BOTON1 = 3;

int val = 0; //val se emplea para almacenar el estado del boton
int state = 0; // 0 LED apagado, mientras que 1 encendido
int old_val = 0; // almacena el antiguo valor de val

int val1 = 0; //val se emplea para almacenar el estado del boton
int state1 = 0; // 0 LED apagado, mientras que 1 encendido
int old_val1 = 0; // almacena el antiguo valor de val

void setup(){ // definir si la variable es de entrada // o salida.
pinMode(LED,OUTPUT); // establecer que el pin digital es una señal de salida
pinMode(BOTON,INPUT); // y BOTON como señal de entrada
pinMode(BOTON1,INPUT);
}

void loop() { // loop = realice un lazo continuamente
val= digitalRead(BOTON); // lee el estado del Boton1
val1= digitalRead(BOTON1); // lee el estado del Boton2

if ((val == HIGH) && (old_val == LOW)){
state=1-state;
delay(10);
}
old_val = val; // valor del antiguo estado

if (state==1){
digitalWrite(LED, HIGH); // enciende el LED
}

else if ((val1 == HIGH) && (old_val1 == LOW)){
state1=1- state1;
delay(5);
}
old_val = val1; // valor del antiguo estado

if (state1==1){
digitalWrite(LED,LOW); // apagar el LED
}
}

Hola, tal vez deberías explicar mejor tu proyecto.
Además te darán un tironcito de orejas por poner el código de esa manera.
A ver si lo he entendido, tu tienes dos botones, es decir dos pulsadores, suponemos por ejemplo de tipo pull down, que si se presiona uno de ellos se enciende un led (o se activa un relé) y si se presiona el segundo, el led o el relé se apaga.
Por otro lado quieres un mecanismo para que durante 5 minutos el Arduino no responda a la presión de ninguno de los dos pulsadores, que en tu caso lo resuelves pulsando varias veces el segundo pulsador, según entiendo.
Si es así, y he interpretado correctamente tus intenciones, pues en lugar de presionar varias veces el segundo pulsador, puedes presionar ambos simultáneamente obteniendo el mismo resultado de manera más sencilla.
Si es así, el sketch quedaría más o menos así:

#define Pin_Led 5       //El pin donde se conecta el led
#define Pulsador_ON 7   //El pulsador que enciende el led
#define Pulsador_OFF 9  //El pulsador que apaga el led

void setup() 
{
  pinMode(Pin_Led, OUTPUT);     //Se define como salida digital
  pinMode(Pulsador_ON, INPUT);  //Se define como entrada digital
  pinMode(Pulsador_OFF, INPUT); //Se define como entrada digital
  digitalWrite(Pin_Led, 0);     //Poner el led en estado apagado
}

void loop() 
{
  //Si se presiona el primer pulsador solo:
  if (digitalRead(Pulsador_ON == 1) && digitalRead(Pulsador_OFF == 0))
    {
      digitalWrite(Pin_Led, 1); //Enciende el led
    }
  //Si se presiona el segundo pulsador:
  else if (digitalRead(Pulsador_ON == 0) && digitalRead(Pulsador_OFF == 1))
    {
      digitalWrite(Pin_Led, 0); //Apaga el Led
    }
  //Si se presionan al mismo tiempo ambos pulsadores:
  else if (digitalRead(Pulsador_ON == 1) && digitalRead(Pulsador_OFF == 1))
    {
      digitalWrite(Pin_Led, 0); //apaga el led
      delay(300000);            //no hace nada durante 5 minutos
    }
}

Si no es lo que pretendes, expica mejor tu proyecto, pon un circuito...

En primer lugar pedir que edites tu primer mensaje y pongas todo el código entre las etiquetas code.

Luego recomendarte que leas sobre un defecto en lo pulsadores llamado rebote, que produce que cuando se pulsa un botón se ejecute muchas veces el estado VAL == HIGH ya que el Arduino es mucho mas rápido que tu dedo.

Una solución es detectar solamente el flanco de subida (RISING) o de bajada (FALLING) mediante la librería Bounce2 por ejemplo. Considera este simple ejemplo:

const byte boton = 2;
bool estado,anterior;

void setup(){
   pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
   estado = digitalRead(boton);
   if (estado && !anterior){
      digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
   }
   anterior = estado;
}