Go Down

Topic: Máquina de estados: Librería FSM (Read 10 times) previous topic - next topic

Igor R

Oct 18, 2011, 11:34 am Last Edit: Oct 18, 2011, 11:42 am by Igor R Reason: 1
Hola,

He creado una librería para programar en forma de maquina de estados, buscando que sea de la forma más sencilla posible para Arduino.
Usar maquina de estados, es una forma de razonar un problema de computación, que se puede emplear en multitud de casos como control de un interfaz gráfico (lcd), protocolos, etc.
La gran ventaja, es que puedes modificar el flujo de tu programa o añadir más estados sin tener que reescribir código y de una manera bastante sencilla.

Me la he creado para mi uso personal, pero la pongo por aquí por si alguien lo encuentra útil. Es una versión "beta".
He escrito un pequeño documento descriptivo (adjunto con este mensaje=FSMv3.pdf).

Adjunto dos ejemplos, que muchas veces he visto preguntar en el foro:

  • FSM_v5: Es un programa que espera recibir por el puerto serie un número enviado desde el PC dentro de una "trama" sencilla. El número debe ser enviado entre SxxxxE, donde S es de start y E de end. xxxx es un número (unsigned long). Una vez recibido, vuelve a sacar por serie el número recibido.

  • FSM_v6: Es un programa que cronometra desde que se recibe una S(start) por puerto serie hasta que se recibe una E (end). Al recibir dicho comando para parar el cronómetro, saca por serie el resultado.



La librería (FSM.zip) se ha de guardar dentro de la carpeta de arduino (libraries).


Saludos y espero que le encontreis utilidad.


]:D
Igor R.

curro92

Gracias, Igor

El programar analizando la situación según un número finito de estados  es una forma muy interesante de abordar los problemas. A mí que me he acostumbrado (viciado) a programar secuencialmente (if() else()) me cuesta bastante cambiar el chip y entrar en ese otro modo pensar, pero probaré algún ejemplo que has puesto.


Igor R

#2
Oct 18, 2011, 12:16 pm Last Edit: Oct 18, 2011, 12:18 pm by Igor R Reason: 1
Si, pero ya verás que cuando pruebas resolver algún programa de esta manera, en muchas ocasiones que te facilita la vida muchísimo!! Resulta más fácil de hacerlo así....

Un ejemplo concreto, es si quieres controlar un menu en un lcd.... Si lo piensas de esta manera, es mucho más sencillo de abordar y si quieres hacer una modificación, no tienes que "parchear" todo tu código anterior....

Ya me direís si alguien prueba la librería....


;)

flico

Esto es SUPERIOR. Gracias Igor

Quote
...acostumbrado (viciado) a programar secuencialmente (if() else()) me cuesta bastante cambiar el chip

Unete me uno al club @curro92
Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

SrDonGato

máquinas de estados se pueden abordar multitud de problemas, es lo que más se utiliza en automatización industrial.
otro de los ejemplos basicos que se se puede utilizar es para

no he podido mirarlo aun pero como todo lo que desarrolla Igor será un trabajo excepcional

3 HURRAS POR IGOR ¡¡¡ :)

Go Up