This is my first hardware project, in which I made a Simon Says game by designing a PCB and writing the firmware for it.
The components involved are a XIAO RP2040 as the microcontroller, 3 switches which represent the possible options the player has to press, 3 different coloured LEDs that light up when introducing the sequence, resistors to stop the LEDs from receiving too much current, and a buzzer so the game is not just vision-based but also audio-based.
How the game works is:
- You press any button to start.
- It gives you a sequence of length 1 (while playing a tone and lighting up the corresponding LED).
- You then have to press the button that corresponds to the LED that just lit up.
- If you get that right, you are given a sequence of length 2, with one extra note added to the previous sequence.
- The game keeps going until you either get the sequence wrong (and hear a losing tune I created), or reach 100 rounds (and hear a victory tune I created).
I made it because I spend a lot of time on devices, so whenever I've been using one continuously for around an hour, I can take a break by playing this game. Since it's a memory game, it also helps me improve my focus.
The KiCad source files (.kicad_pro, .kicad_sch, .kicad_pcb) and gerbers.zip used to manufacture the PCB are located in the pcb-files folder.
This is what the schematic looks like:
This is what the PCB looks like:
This is what the PCB looks like in the 3D renderer:
The firmware contains the code for exactly what I explained in the how the game works' section and it was written in the Arduino IDE in C++. It is in the echo.ino file.
(Also in the BOM.csv file)


