
The 80’s and 90’s were a wonderful time for the realm of Electronics toys. This was the age of the implementation of the affordable computing into toys. Notable mentions would include the entire Mattel Electronics lineup of portable digital games, Nintendo’s early LCD game “Game and Watch”, and even the first true “multi-game” portable “Merlin”.
One game that can be touted as an icon of this era of toys was the Electronic “Simon” game.
Consisting of 4 large, colored, light-up buttons, the mechanics of the game were very simple and intuitive but, as shown by how well the toy sold, were proven to be effective in generating hours of playtime.
A comprehensive review of the game can be found at YouTuber bigclivedotcom’s page (he’s also an overall excellent YouTuber to check out for electronics and elctrical thingamabobs)
The toy plays a note and lights up the buttons in a specific pattern and the player has to perform the exact same pattern. Each “level” get progressively harder as the pattern gains another “note”. Dreadfully simple game of Simon but a very fun activity. Also, a very fun idea to implement as a DIY project.

The Simon game can be implemented through an Arduino and some basic input and output components (A buzzer, LEDs, capacitors, and resistors).

A closer look at the schematic shows that for the button inputs, there are a number of supporting resistors and a capacitor, this is because of an effect called “Button bouncing”. Ideally, when a button is pressed, it should immediately connect its terminal and when a button is released it should immediately disconnect its terminals. However, when a real-life button is pressed, it “bounces” very fast for a short amount of time. This can cause it to register as multiple presses.

To solve this, it can be done through the software (in code) or through hardware. In using hardware, a capacitor’s ability to “charge up” and prevent instantaneous changes in voltage is used so that the signal rises slowly over a set amount of time. As long as the capacitor charges longer than the time it takes for the button to stop bouncing, it can help remove the bouncing signal.

Observe when the button is not pressed, the voltage across the 4.7μF capacitor charges through both the 10kΩ and 1kΩ resistors. When the button is pressed, the capacitor discharges only through the 1kΩ resistor. The time for a capacitor to fully charge or discharge is given by time=5RC, where R is the equivalent resistance of the resistors the current has to go through to charge/discharge the capacitor. In this case, notice that the capacitor would charge much slower than it would discharge, but in the application of just being simple inputs, the charge/discharge time delay (~260ms and ~24ms, respectively) would be unnoticeable and works fine for the project.
As for the outputs, LEDs are driven through 330Ω resistors from the pins of the Arduino and a buzzer is directly driven by an output pin as well. The choice of what notes the buzzer would play are found in the code and can be easily swapped out for other notes. The premise in choosing the notes to be played has to take into consideration that since the music pattern is always random, the sequence of notes should try to always sound pleasant regardless of the order they are played in. The original Simon game accomplished this by choosing four notes that would always be harmonic (E, C#, A, E *octave down) . A quick look at Wikipedia shows which notes were used and that is replicated in the code (except for the last note which is instead an octave up rather than down).
The physical build of the project was quick and majority of the time was spent on writing the code. The main points needed to accomplish replicating the game were having the Arduino generate the play sequence, remember the sequence, and check if the player is able to perform the sequence. Generating the sequence even brought into light how to generate random numbers using the microcontroller such as using a floating analog input as “seed” for the pseudorandom number generation.
Minute details that were also considered were making sure that even through the limited inputs and outputs, the player should have feedback from the game such as:
1.) An intro and outro sequence for game start and end
2.) Show when a player should start pressing buttons
3.) Audio and visual feedback for a correct attempt
4.) Audio and visual feedback for an incorrect attempt or a time-out
The range of the sounds that the buzzer can can also be used in creating custom intro and outro sequences that aren’t limited to the 4 output sounds during gameplay.
All in all, the game was simple enough to build in hardware and replicate in software that it would be a suitable task for someone that wants some practice in building around the Arduino platform and practice writing code from scratch. Notably, writing this project’s code was fun and helps bring out good ideas on how to control the flow of the code and basics on storing sequences.
For reference, here’s the link to the code (trying it from scratch is also a good idea): https://github.com/OverTheCorner/ArduinoSimon
and here’s a demo of the project on breadboard:
As for going on with this idea, probably a custom PCB for this since there’s just a small number of parts and the Arduino Nano is small enough to just plug into the board (KiCAD also has built-in board layout for plugging in different Arduino form factors). They also have switch buttons where the LED is already built in and those would be a better fit for the project. A fun enclosure for the entire thing and being battery powered would make this a cute little electronic toy trinket (which they do have for the original Simon).
