Máquina de estado finito en un Arduino (2 / 7 paso)

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!

Artículos Relacionados

Máquina de estado finito de Arduino y multitasks

Máquina de estado finito de Arduino y multitasks

Una máquina de estados finitos es diagrama usado para organizar las tareas para controlar varios sistemas industriales (producción, calentador, bomba, cintas transportadoras...).Todos estos sistemas incluyen Estados (asociada a una "acción", es
Arduino Flowmeter con una máquina de estado

Arduino Flowmeter con una máquina de estado

Mi jefe tiene un medidor de caudal para varios años. Éste fue fabricado por una famosa empresa: PARKER. Pero este flowcoder analógico se rompió: no hay señal desde el circuito de medida interior. Así que decidí repararlo de una manera barata, una nue
Lámpara de estado de ánimo con Arduino

Lámpara de estado de ánimo con Arduino

Hola! En este tutorial aprenderás a hacer una lámpara de estado de ánimo con arduino.Sé que puedes haber visto un montón de humor lámpara proyectos con arduino, pero no estaba muy satisfecho con ellos porque todos cambian el color muy abruptamente. A
Lámpara de estado de ánimo de Arduino

Lámpara de estado de ánimo de Arduino

Hola usuarios de Instructables!!!!!! Este es un proyecto simple, divertido y útil para los principiantes de arduino. Puede construir la lámpara y luego cargar el código para que la luz de la lámpara hasta un color de tu agrado. El color es suave y se
Luz de estado de ánimo de Arduino y titular

Luz de estado de ánimo de Arduino y titular

aprende a hacer tu propia luz de estado de ánimo de un Arduino!!!!!!Paso 1: Reunir los materialesVas a querer reunir estos materiales, si usted quiere construir la luz de estado de ánimo:1 Uno de x Arduino1 LED x RGB3 x 330 Omh resistencias1 x Breadb
Cómo hacer una máquina de "bajar de mi propiedad" arduino

Cómo hacer una máquina de "bajar de mi propiedad" arduino

Este instructable le mostrará cómo hacer que mi máquina de arduino "bajar mi propiedad". El único propósito de esta máquina es eliminar objetos colocados en él. El video de arriba explica esto muy bien.Paso 1: fuentes deMateriales:X 2: 7 cm * 9
Hablando con una máquina expendedora de MDB con dos Arduinos

Hablando con una máquina expendedora de MDB con dos Arduinos

máquina expendedora de piezas todo habla uno al otro en un bus de ordenador conocido como MDB.  He escrito algo de código para ayudarle a conectar y escuchar su conversación en tiempo real.  Se necesita acceso físico a la máquina expendedora.¿Por qué
Estado del servidor de Arduino Minecraft + enviar comandos

Estado del servidor de Arduino Minecraft + enviar comandos

¡ Hola chicos!Hoy os muestro cómo se puede comprobar el estado del servidor del servidor de minecraft. También puede enviar comandos al servidor de Minecraft.Le deseo mucha diversión con este proyecto. ;)Si tiene preguntas puede dejar un comando.Paso
Máquina de estado de ánimo de Steampunk II

Máquina de estado de ánimo de Steampunk II

tenía algunos viejos puerta de cristal mandos que pensé sería realmente grandes iluminada por un LED.  Así que después de unas pruebas, se me ocurrió esta idea.  Tipo de como una cosa de mago de Oz... Las perillas de luz con una variable que cambia d
Estado de máquina y multitarea en arduino con expansores SPI

Estado de máquina y multitarea en arduino con expansores SPI

La semana pasada, pedía crear un sistema a fuegos artificiales del piloto con un arduino. Necesitaba unos 64 salidas para controlar los incendios. Una manera de hacerlo es utilizar expansores del IC. Por lo que existen 2 soluciones:-un expansor I2C p
Helipuerto de Arduino para mini Quad Copter

Helipuerto de Arduino para mini Quad Copter

Utilice este helipuerto para entrenamiento del aterrizaje de la precisión o desafía a tus amigos. ¿Por qué no establecer una pista y dejar que el helipuerto a tiempo tus vueltas?Si te gusta este instructable - por favor vote!¿Hagámosle frente - ya qu
Arduino líquido/polvo exacto sistema de dispensador

Arduino líquido/polvo exacto sistema de dispensador

Objetivo: Hacer algo para hacer alguna medición, ya sea para cocinar o de otra manera. No le líquidos y polvos en el mismo panel de control. Utiliza un Arduino para ejecutar el sistema.Nota: Ninguno de nosotros (los diseñadores) tienen todo eléctrico
Atenuador de luz de Arduino

Atenuador de luz de Arduino

Un système imite les ciclos du Jour.Un sistema de simulación de luz de día con RTC.Paso 1: introducciónCE système va permettre d'imiter ONU palanca de soleil (LV) et un coucher de soleil (CO), une fois par jour Cet appareil est destiné surtout aux él
Garaje de WEMO Belkin

Garaje de WEMO Belkin

El objetivo del proyecto es su puerta de garaje en un dispositivo de Internet de las cosas (IoT) controlado, es decir, ser capaz de abrir/cerrar la puerta y verificar el estado de su teléfono (iPhone, Android, etc.). Si bien hay muchos proyectos para