Based on the popular memory-based electronic toy Simon, I've built a customized variant on an Arduino Uno board, implementing configurable difficulty levels set by a button at the start. The game presents a randomised and incrementing sequence of LED flashes for the player to replicate using corresponding buttons from memory.
The low level C-based software design revolves around a finite state machine architecture, implemented using the method of a state transition table, where each cell contains the next state and an action chain to execute upon a specific event trigger. This method is chosen to clearly distinguish the numerous game states and transitions that Simon can carry, as well as being easily adaptable and extensible, facilitating the addition of new difficulty levels.
The hardware setup consists of four LEDs and buttons, with built in interrupts and timers leveraged for precise timing for LED sequencing display and timeouts, as well as responsive button handling.
