No voy a hacer tu tarea, pero simplemente te daré algunas pistas para que comiences.
Primero define los estados. Estas son "situaciones" en las que el hardware o dispositivo lógico puede lograr. Sugeriría los siguientes cuatro estados:
Estado A - DESACTIVADO: la entrada del interruptor se rebota y definitivamente es estable en la condición APAGADO y la salida del circuito está en la condición APAGADA (llámela "0", o lógica BAJA).
Estado B - APAGADO con ENCENDIDO Detectado - La salida es BAJA, pero se detectó un máximo instantáneo en la entrada del interruptor (por ejemplo, alguien está comenzando a presionar el interruptor y está saltando).
Estado C - ENCENDIDO: la entrada del interruptor se rebota y es definitivamente estable en la condición de ENCENDIDO y la salida del circuito está en la condición de ENCENDIDO (llámelo "1" o lógica ALTA).
Estado D - ENCENDIDO con APAGADO Detectado - La salida es ALTA, pero se detectó un BAJO instantáneo en la entrada del interruptor (por ejemplo, alguien está comenzando a soltar el interruptor y está rebotando).
A continuación, debe definir las Condiciones de transición que lo llevarán de un estado al siguiente. Estas son las flechas entre las burbujas en un diagrama de estado tradicional. Por ejemplo, para pasar del estado A al estado B, necesita una condición de transición llamada algo "Push Detected" o "On Detected". Para pasar del estado B a A, necesita una condición llamada "Liberación detectada" o similar.
También necesitarás una variable paramétrica. En este caso, sería un temporizador o un contador de reloj. Una variable que se incrementa en un valor fijo, como 1 mili-segundo. Mientras el estado permanece en el estado B Si el temporizador llega a 5 milisegundos, tiene una condición de transición llamada algo así como "Tiempo de espera", que lo lleva al estado C.
¿Ves? Debe "deletrearlo" en burbujas, flechas y variables, así como usted mismo es el circuito lógico que está realizando la tarea de desmontaje. Incluso una tarea simple como anunciar un interruptor puede tener un diagrama de máquina de estados bastante complicado. El código para realizar el rebote en una aplicación real será más fácil de escribir que dibujar el diagrama de la máquina de estados. Pero dibujar la máquina de estados y analizar el problema es una manera excelente de aprender el tema.
Trate de usar otros ejemplos de Diagrama de máquina de estados (por ejemplo, de libros de texto o recursos en línea) para otros problemas para guiar sus esfuerzos con su tarea actual.