Contador y devuelve que cuenta

Y como detectas un flanco de bajada?
Es cuando una entrada pasa de 1 a 0
Para hacerlo necesitas leer el estado de una entrada usando digitalRead(pin) y almacenar el valor anterior de ese estado
O sea tienes dos variables, una llamada estado y otra llamada estadoAnterior

cuando preguntas debes hacerlo por ambos valores pero que debe valer cada uno para que se de tu condición?

Y la otra cosa es cuando actualizas el valor de estadoAnterior, obviamente luego de leer estado, y obviamente luego de comparar.

Te he dado una pista importante de como hacerlo
Finalmente cada vez que veas un flanco cuentas. y en base a eso, manejas un control de tiempo millis() del led
Mira el ejemplo BlinkWithoutDelay.ino de tu ide para hacerlo sin usar delay.

A ver que te sale!!