Who’s Simon? Nobody? My God, are you living under a rock?
Simon is an elecronic game created in the late ’70 where you basically had to push some buttons in a specific sequence that gets longer and longer. Still nobody? Ok, here’s the wiki.

Why this introduction? Because Simon is a game, and I love games. Also, Simon is an ELECTRONIC game, I am learning electronics and probably there’s no better way to learn something than using funny examples as exercises 🙂

After a couple of hours of experiments and tests this is what came out:

As you can see I’m using an Arduino board to do all the heavy lifting and just some LEDs, resistors and pushbuttons. My goal was to keep the number of components to the bare minimum (but I’m pretty sure there are better ways…)

Talking about code, I have used a very very simple State Machine (something like this one, but much simpler) with four states:
1) build a random sequence of LEDs
2) show the sequence to the user
3) wait for input and check for error
4) show the result and reset

Warning: may be addictive, do not play for more than 1 hour.