Always Working on Something

Menu

Simon Hack a Day’ing

Hack a Day is having another contest. This time it is a microcontroller based contest. The entries need to hide hackaday.com in a microcontroller project as an Easter egg. The extent of my experience with microcontrollers was soldering together at a Simon project at a Maker Faire a few years back. I have been meaning to buy an FTDI board to program the Simon for a while now but never seemed to get around to it. When the Hack a Day contest launched I decided now was the time to give it a shot.

A few days later with the FTDI in hand it was time to start creating my Easter egg. I downloaded the original source code for the Simon (available on the Sparkfun web site) and started adding my own code to incorporate the Hack a Day URL. What I came up with is a fully functional Simon game with a couple of minor twists. The first change is that when Simon is playing the sequence of buttons for the player to repeat. The sequence is played by Simon in an irregular pattern which is actually Morse code for “hackaday.com”. When playing the game it is clear that the timing is a little off but it hard to tell it s Morse code because the tones change with the different colored buttons. The video below shows the Simon playing with the modified program.

Since I am not great at playing the Simon game I added another method to generate the full Morse code for “hackaday.com”. Usually to start the Simon game the player needs to push one of the buttons to initiate the beginning of a new game. I modified the program to detect if two buttons are pressed rather than one. With the modified program when two buttons are pressed at the same time the Morse code it pulsed out prior to the game starting. The video below shows the full Hack a Day URL being played by Simon.

I have uploaded my modified code here: Simon_Game_Code_with_morse_code.ino. I included all of the letter codes in my look-up function so the Morse code message can easily be changed. The length of the game is automatically adjusted to the length of the string entered in the egg array.