Haber si esto te puede servir:
int Contador = 999; // Variable con el numero de deciams a contar
int AuxContador = 0; // Auxiliar para no perder el valor original
boolean Pausa=true; // Descontoar o no
boolean Pulsado=false; // Boton pulsado, esperar a soltarlo
int StartStop=5; // Pin del pulsador startstop, pon el tuyo
int Led=13; // pin del led a encender
long Anteriormillis=0; // Para controlar cada cuanto se puede pulsar
long Intervalo=100; // 100 milisegundos = 1 decima
void setup()
{
pinMode(StartStop, INPUT); // pin del pulsador
pinMode(Led, OUTPUT); // pin del led
digitalWrite(Led, LOW); // led apagado hasta pulsar startstop
AuxContador=Contador; // Decimas programadas
Anteriormillis=millis(); // Almacenamos el valor de millis para controlar cuanto tiempo ha pasado
}
void loop()
{
if (digitalRead(StartStop) && !Pulsado) // Si pulsamos starstop y no estaba pulsado antes
{
Pulsado=true; // Ahora si esta pulsado
if (Pausa) // Si el cosntador esta en pausa pasarlo a activo y vicebersa
{
Pausa=false; // Tiene permiso para descontar
digitalWrite(Led, HIGH); // esta descontando, led encendido
}
else
{
Pausa=true; // No tiene permiso para descontar
digitalWrite(Led, LOW); // No esta descontando, led apagado
}
}
if (!digitalRead(StartStop) && Pulsado) // Hemos soltado el pulsador
{
Pulsado=false; // Podemos volver a pulsar
}
if (!Pausa && millis()-Anteriormillis>Intervalo) // Si ha pasado el tiempo programado y no esta en pausa
{
AuxContador--; // Descontar
if (AuxContador=0){AuxContador=Contador;} // Llego a cero, almacenar el valor original
Anteriormillis=millis(); // Almacenamos el valor de millis para controlar cuanto tiempo ha pasado
// Al finalizar el tiempo, arancaria de nuevo a descontar, no se si es lo q quieres
}
}