Encender y apagar un led con un solo botón, pero poder "apagarlo" sin presionar

Buenos días/tardes. Me he encontrado con el caso del código de encender y apagar un led con un botón, este principio fue utilizado para realizar una tarea más compleja, pero en esencia es apagar y encender un led al presionar el botón.
Me gustaría que mediante condiciones la variable "estado" sea igual a 0 sin necesidad de presionar el botón, sino con una condición por ejemplo que al contar 5 pulsos de encendido ( para ello necesito presionarlo 9 veces porque el primer pulso enciende y el segundo pulso apaga) encienda el led solo 5 segundos(en lugar de que se quede encendido hasta presionar el botón de nuevo), éste se apague y estado sea igual a 0. Quedando el sketch a la espera de un nuevo pulso y así seguir con el programa de pulsarlo 9 veces.
Espero que me haya dado a entender bien, de antemano muchas gracias.
Sketch base:

// Práctica encender LED con botón pulsador y luego apagar LED con el mismo[color=#757575][/color]
//boton pulsador[color=#757575][/color]
[color=#757575][/color]
int LED =13;[color=#757575][/color]
int BOTON = 7;[color=#757575][/color]
int val = 0; //val se emplea para almacenar el estado del boton[color=#757575][/color]
int estado = 0; // 0 LED apagado, mientras que 1 encendido[color=#757575][/color]
int valAntiguo = 0; // almacena el antiguo valor de val[color=#757575][/color]
[color=#757575][/color]
void setup(){ [color=#757575][/color]
 pinMode(LED,OUTPUT);[color=#757575][/color]
 pinMode(BOTON,INPUT);[color=#757575][/color]
}[color=#757575][/color]
[color=#757575][/color]
void loop() {     [color=#757575][/color]
val= digitalRead(BOTON); // lee el estado del Boton[color=#757575][/color]
if ((val == HIGH) && (valAntiguo == LOW)){[color=#757575][/color]
estado = 1-estado;[color=#757575][/color]
delay(10);[color=#757575][/color]
}[color=#757575][/color]
valAntiguo = val; // valor del antiguo estado[color=#757575][/color]
if (estado==1){[color=#757575][/color]
 digitalWrite(LED, HIGH);[color=#757575][/color]
}[color=#757575][/color]
else{[color=#757575][/color]
 digitalWrite(LED,LOW);[color=#757575][/color]
}[color=#757575][/color]
}

Moderador:
Un doble posteo es una de las peores faltas en este foro.

Encender y apagar un led con un solo botón, pero poder "apagarlo" sin presionar

La razón es que alguien que te responda en tu otro hilo (ya lo hicieron) se tomará el tiempo de darte una buena respuesta sin saber lo que se ha escrito en el otro sitio. Lo que consituye una perdida de tiempo para ambos foreros.
Por respeto a ellos es que te pido que no lo vuelvas a hacer y que leas las normas.
La próxima serás sancionado.
Este hilo permanecerá cerrado y luego será borrado.

Normas del foro

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.