Midterm Project (2023): Creating “Simon”

The game “Simon” is a classic toy which tests the working memory of the player. For the final project, you will create a small, coin cell-operated Simon game. This will involve PCB design and fairly involved firmware to achieve an enjoyable user experience. In addition, you will be invited to add some sort of interesting feature beyond the Simon game. In the past, this has ranged from simple animations to a mode in which the device becomes a music sequencer.

Here’s a video from Tiger Yang (Spring 2019), showing a Simon board in action along with a number of bonuses.

Rules for the ELEC327 version of the Simon game

In our variant of Simon, the point of the game is to learn a sequence of M button presses. Each button corresponds to one of the LEDs and to one frequency of PWM tone. On the nth turn, the device plays the first n elements of the sequence. So one tone/LED on turn one, two on turn two, etc. The pattern of the n-1 elements of the sequence are the same as the previous turn. Each turn, after the sequence is played, the player must push the appropriate buttons to recreate the sequence. If they do it correctly, the game proceeds to the n+1th turn. If they make an error or wait too long (measured by the time since the last button press), they lose. Winning corresponds to playing the full M-element sequence. If the player loses, the device should play a “Game Over - Lost” animation that continues until it is reset. Similarly, if the player wins, the device should play a “Game Over - Won” animation until it is reset (e.g., by power cycling or pressing a button).

Details:

Here’s a nice video from Joshua Harper (Spring 2022) showing a Simon board in action.

Helpful Tips

Much of Simon can be pieced together by using code developed from previous labs. To help you,

Physical information is given in the ELEC327 Simon repository Eagle CAD schematic in the ELEC327 git repository.