Funciones en el código del lenguaje arduino que no logro entender

Lo que necesito es que al presionar el botón, se encienda la luz del pin 13 y quede encendida hasta que vuelva a presionar el mismo botón. Lo cual lo está haciendo bien.

Pero las últimas 4 lineas del código en la salida Key es la que me da problemas, ya que quiero que al presionar el mismo botón además de hacer lo anterior me encienda el led por un tiempo determinado y se apague solo, lo cual si hace con el código, el fallo está en que cuando presiono el boton para apagar el led 13 me vuelve a hacer lo mismo en la salida key.Como hago para que al presionar el botón para apagar el pin 13 no me haga la secuencia de key, que solo lo haga al encender el led 13 y no al apagarlo.

Se supone que ese es un botón es el master que si este está encendido todo los demás funciona pero que al apagarlo no deja hacer nada que este en el código.

const int BOTON = 2;// Boton de encendido y apagado general
const int LUZBOTON =13; // Luz de boton de encendido general
const int KEY =4; // LLave 14 de la cañeria
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
void setup(){ // definir si la variable es de entrada // o salida.
pinMode(BOTON,INPUT); // Establecer BOTON como señal de entrada
pinMode(KEY,OUTPUT); // establecer que el pin digital es una señal de salida
pinMode(PURGA,OUTPUT); // establecer que el pin digital es una señal de salida
pinMode(PUMPTR,OUTPUT); // establecer que el pin digital es una señal de salida
pinMode(PUMPEX,OUTPUT); // establecer que el pin digital es una señal de salida
}
void loop() { // loop = realice un lazo continuamente
val= digitalRead(BOTON); // lee el estado del Boton
if ((val == HIGH) && (old_val == LOW)){
state=1-state;
delay(10);
}
old_val = val; // valor del antiguo estado
if (state==1){
digitalWrite(LUZBOTON, HIGH); // enciende la luz indicadora de sistema trabajando
}
else{
digitalWrite(LUZBOTON,LOW); // apaga la luz indicadora de sistema queda todo detenido
}
if (val == HIGH){
digitalWrite(KEY, HIGH); // abre la llave 14
delay(1000);
digitalWrite(KEY, LOW); // cierra la llave 14
}
}

Necesitas leer Normas del foro Editar tu post usando etiquetas, cambiar el título por algo que tenga que ver con tu problema y poner ordenadas las cosas. Primero el comentario y luego el código, no te parece?