Botón de Marcha/Parada en cualquier momento de ejecución

Saludos a todos, quería que me ayudaran con un problema, estoy realizando un trabajo de la Universidad, el el cual debo controlar un motor DC, un LCD y unos LED's, básicamente es el modelo de una lavadora. El problema surge debido a que necesito tener un pulsador de marcha/parada, que ponga en "pausa" el programa y con el mismo botón lo vuelva a poner en marcha. Leí muchos post que indican hacerlo en el loop, esto no es posible en mi caso ya que debe ser EN CUALQUIER MOMENTO sin importar que este ejecutado una subrutina con todo un código en ella, asi que no puedo estar comprobando si el botón fue pulsado en cada subrutina de mi código, así que debo utilizar interrupciones, hasta ahí todo bien, ahora leí sobre la función sleep, mi duda va en como puedo invocarla desde la interrupción y despertarla desde la misma interrupción, encontré posts sobre poner en sleep el arduino con una interrupción y despertarlo con otra distinta, en mi caso el mismo pulsador debe ser de pausa y de marcha. No sé si la forma de hacerlo con sleep sea la mejor, es por eso que recurro a ustedes, como podrían resolver este problema. Muchas gracias de antemano.

Motor, LCD y LED no requieren el uso de interrupciones. Tienes tiempo de sobra para consultar el estado del pulsador/actualizar LCD y LEDs sin perderte de nada.

Lo único que no debes usar es delay() y en su reemplazo usar millis(). Cómo usarlo? Ve a Documentación y en indice de Tutoriales (1er Hilo) verás algunos temas que por ahora incluyen a millis().

No entiendo para que quieres en un control de lavadora una función sleep. No tiene sentido.
Algo que esta consumiendo energia y vas a ahorrar energía en un microcontrolador que apenas la consume. No le veo sentido a ese comentario por ahora.

Sigue explicando un poco mas la idea porque no esta claro del todo aún.