Sound Memory Game
The goal of this assignment is to show that we can make a more fully detailed interactive system with physical controls, and that we can keep a user engaged with the system we built.
︎Concept of the Project - Sound Memory Game︎
Sarah and I wanted to combine Arduino and P5 to build a simple listening/memory game to recreate fun sound patterns displayed on the screen using push buttons.
︎Concept of the Project - Sound Memory Game︎
Sarah and I wanted to combine Arduino and P5 to build a simple listening/memory game to recreate fun sound patterns displayed on the screen using push buttons.
︎Components︎
- Arduino Uno
- Long Wires
- 5 Arcade Push Buttons
- P5
- DC Power Supply
︎Basic User Journey Map︎

- 5 Players maximum
- 5 different push buttons
- Players will hear the sounds first and need to push the buttons following the order of the sounds.
- We will display point system on the screen while the game is on. Everytime players pass a stage, they will get one point.
︎ Date: November 21st 2022
After talking to Yoni, Sarah and I decided to work on one breadboard with five push buttons first to check the circuit before working on with separate push buttons. The game will create a random order of the patterns, and players need to memorize and get the correct answers as much as they can in 5 minutes. We wanted the game to randomize every stage.
︎Shape Designs︎
︎Sounds︎
︎ Date: November 28th 2022
︎Making a Demo System for the Game︎
Process
Initial state:
Game Intro page- w/ INTRO sound effect
“Press to play” button [UI]
Game starts:
Random sequence pattern is generated with corresponding buttons at the same time
Timer is set off (5mins countdown)
Patterns display on screen:
Show random sequence on screen to the player: one by one, patterns increase 1 sec apart
Sequence disappears after showing patterns
Input patterns on display by the player:
Reads sequence input by the player
Read input sequence from push buttons
Record each button press
If all input has been made , then verify the guess
Verifying the guess:
Check player’s guess against the generated random sequence
Correct: Player was right. => Increase difficulty level and goto start game=> Reward buzz sound => level up to the next round
Incorrect: Punishment buzzer=> three tries=> game over (restart game)=> GameOver sound effect
Times up [00:00]:
When countdown has ended: Time is up sound effect
Game stops => Total points accrued for each team displayed on screen
Game Over:
Resets the game + timer resets
Accrued Points resets to 0
︎Conncecting the buttons to Arduino Uno︎


︎Serial Communication Using Arduino and P5 Webserial Library︎
︎User Tesings #1︎


Elias recommended us using the Arduino Button Library to make the buttons work as a keyboard system. First, we only used two buttons to test serial communication using Arduino and P5js. Button 1 is connected to digital pin 6, and button 2 is connected to digital pin 5 in Arduino Uno for testing. Then we checked the serial communication between Arduino and P5. The next step was to make a demo system of the game. The The player should guess the correct pattern of the numbers (1 and 2 for now) to go to the next stage of the game. One troubleshooting we faced was how to give a player three lives before the game over.
︎ Date: November 30th 2022
TO DO LIST
1. Make sure that the five buttons work in random order together.
2. Make the patterns random and repeat the shapes in order, but no more than two times.
3. Connect the sound and buttons so the sound plays in p5 correctly when a player presses the button.
4. Make sure that the incorrect sound plays and the original button sound stop when a player gives a wrong answer.
5. We need a 1-sec delay before we play right and wrong sounds.
6. Load images that belong to the sounds.
︎Background Design for the Interface of the Game ︎

︎User Testing #2 ︎
Problem:
Since we have an index up to 4 when a player guesses a correct answer at the end,
it will not show the final shape and go to the next round, and also, we need to keep tracking the player
state in P5. And also, it won’t go to the next stage when a user wins first round of the game. So,
we added an argument to the newGame function in P5. We made the “shouldPlayIntroSequence”
argument to be true and set it as false when the user goes to the next round.
︎ Date: December 2nd 2022
TO DO LIST
1. Make a timer for the interface.
2.Save the timer in the variable timer interval
3. Make the value returns from set interval for the timer.



︎ Date: December 5th 2022
TO DO LIST
1. LED codings in P5.
2. Connect the LED in the breadboard.
3. Put serial read codes to Arduino to work the LED.
4. Add LED output with IntroIndex.
5. VN pin in Arduino to power the buttons using power supply.
We weren’t sure about which part in LED was positive and which was negative so made another argument in Arduino.


︎ Date: December 6th 2022
Feedback from the User Testing During the Class (Feat. Other Physicial Computing Section)
1. Make a higher deck, so people can simultaneously look at the buttons and the screen together.
Some people mentioned it was hard for them to concentrate since they had to look down and up while the intro sequence was showing.
2. Match the button colors to the colors of the shapes.
Most users needed clarification on the differentiated colors of the buttons and the shapes and had a hard time matching both together.
3. Became Tedious After a Few Rounds..
Once people memorize the shapes, some people got through the stages easily.
David recommended us to make the game harder as time goes on (every stage).
4. Be Aware of the Places that You Present
Most people couldn't hear the sounds since the space was crowded, especially in conventional places.
(One option was to use a headphone.)
5. Intro Sequence Confuses the Users
People got confused if they need to follow the intro sequence
or the acturall target sequecen that plays after the intro sequence.
︎User Testing #3 ︎
P5 LINK
︎ Date: December 9th 2022
Fabrication for the Buttons and the Station
1. Laser Cut the Wood Panel
Six panels for making a box for the button station.


https://www.festi.info/boxes.py/ClosedBox?language=en for calculating the panels.


2. Spray Paint the Panels
Six panels for making a box for the button station.


3. Soldering the buttons with wires
There are 4 wires for each button, to power up and to light up the LED.

4. Soldering the buttons with wires
Six panels for making a box for the button station.
︎ Date: December 12th 2022
Assemble the Box Panels Together



︎User Testing #4 ︎
︎ Date: December 13th 2022
Final Presentation
