Paso 2: Aplicar manualmente el FSM en un arduino
Cuando queremos aplicar este comportamiento en el Arduino, el código podría ser algo como en este esencial. El código es nada demasiado especial, la sentencia switch-case simplemente contiene un caso para cada estado posible y comprueba dentro de if allí las condiciones de transición se cumplan. Si es así, se cambia el estado.
Como se puede ver, el código es bastante simple. Pero ¿te imaginas lo que sucede cuando no tienes 2, pero los Estados 10 o 100? No es infrecuente para un FSM del mundo real. El código es ilegible y puede alcanzar longitudes de varios mil líneas. También, normalmente, queremos planificar el FSM en forma gráfica, porque tenemos que ser capaces de ver lo que hace tan rápido como sea posible. Entonces, todavía necesitamos para la codificación de la máquina de estado actual, y necesitamos estar seguro que nuestro diseño gráfico y el código escrito a mano hacen lo mismo. Esto puede ser un gran problema.
Piense en esto: para cada estado de la FSM ha, nuestro código tiene una sentencia "case", y para cada transición a otros Estados, necesitamos uno si o una instrucción case dentro de allí. Si se tiene una máquina de Estados donde cada Estado puede llegar a todos los demás Estados (el caso más extremo), nuestro código crecería con el cuadrado de n, donde n es el número de Estados. Por lo tanto, tendríamos 3 casos de 3 Estados, 3 ifs dentro, por lo que la longitud del código sería proporcional a 9. Cuando tenemos 10 Estados, que no es mucho más, la longitud del código sería proporcional a 100, y con 20 Estados, el código ya es cuatro veces más de largo. Una representación gráfica de la FSM sería más fácil de entender, y sería bueno si no tendríamos que manejar todas esas declaraciones caso de interruptor. Si estás familiarizado con netlists que describen esquemas de simuladores – no queremos diseñar esquemas con netlists, tampoco. Así que, ¿qué hacemos en su lugar? Ver en el siguiente paso!