Modelo interactivo del reloj Casio F-91W con statecharts

Fuentes: Interactive model of the Casio F-91W watch using statecharts

El proyecto dundalek/casio-f91w-fsm presenta un modelo interactivo del reloj Casio F-91W, una herramienta didáctica que utiliza statecharts para simular el funcionamiento del dispositivo. Esta implementación se basa en el trabajo previo de Alexis Philip, quien digitalizó los elementos gráficos del reloj, y amplía la lógica mediante la librería XState, permitiendo visualizar las transiciones de estado en tiempo real. El objetivo principal es ilustrar cómo los statecharts, introducidos por David Harel en 1987, pueden modelar sistemas complejos de forma clara y accesible, utilizando un reloj analógico como caso de estudio clásico.

Aunque el proyecto se construye sobre la base de un reloj Citizen Quartz Multi-Alarm III, el diseño se adapta al popular Casio F-91W, que sigue en producción y fue popularizado por su diseño icónico. La demostración incluye la configuración de fecha y hora, aunque con limitaciones técnicas: el día de la semana no se muestra debido al uso del objeto Date nativo de JavaScript, y la activación de la alarma no está implementada. Además, se omite la función de mantener pulsado el botón A para continuar incrementando el tiempo durante la alarma o la configuración de la fecha.

El código está escrito en ClojureScript y utiliza la librería clj-statecharts para integrar XState. La estructura del repositorio incluye un script original, la implementación de statecharts, servicios de XState y la aplicación principal. Los desarrolladores pueden ejecutar el proceso de desarrollo con Babashka y abrir la aplicación localmente en el puerto 8888. Este recurso sirve como referencia para estudiantes y desarrolladores interesados en la teoría de máquinas de estado y la implementación práctica de statecharts en aplicaciones web interactivas.