Rishab Jaggi and Elena Tomlinson
ESE 190 Final Project Writeup
Initially, we built Guitar Hero using four buttons that corresponded to four music notes, a motion sensor that detected the “strumming” of a guitar string, and a medium-sized 8x8 LED matrix that acted as the screen of the game, showing four different colored streams of notes coming down each of four columns of the matrix, each leading to a separate button. We chose this because we both played Guitar Hero when we were younger, and the hardware and software that was available to us easily corresponded to the fake guitar and screen-view of the real Guitar Hero game. We set up all of the hardware and tested its functionality by the first demo day at which point we were waiting for the shipment of the LED matrix backpack to arrive, a necessary component for the integration of the matrix into our system. Tasks we had left at this point: (1) solder the wires to improve the UI, (2) integrate the LED matrix into the hardware, and (3) write the software behind its light display. Unfortunately, when the LED matrix and its backpack arrived, we saw that it was a “mini” LED matrix, measuring one-inch by one-inch in size in comparison to the four-inch by four-inch matrix that we had previously been working with. As the final demo day was quickly approaching, we had to quickly decide how we could transform the components of our existing project into a different game that worked with the mini-matrix.
We chose to implement a trivia game, inspired by the recent hype around HQ, the live trivia app. Our game had two buttons corresponding to the user’s “YES” and “NO” answers instead of our original four buttons that corresponded to music notes. It used the mini LED matrix to display questions and animations instead of streams of incoming music notes, and used the motion sensor to act as a “SUBMIT ANSWER” button rather than using it to mimic a guitar string. We also added an additional component to our system: Bluetooth, which sent and received two different audio signals corresponding to correct and incorrect answers submitted by the user. We think that this solution was a great way to incorporate all of the necessary components of our original Guitar Hero system, and the skills we learned while building this alternative project translate well if we were to order the properly sized matrix and complete our initial project plan.
The following is a breakdown of the subsystems of our final outcome: buttons for answer selection, light sensors for submit, LED matrix display, and Bluetooth for audio feedback. We used 10K ohm resistors to wire the buttons and light sensors, with connections to 5V power and GND, and read them through Arduino digital read. After soldering the LED matrix to the mini backpack, there were four required connections: GND, 5V Power, DAT -> Analog4, and CLK -> Analog5. The LED matrix was programmed using the Adafruit LED Backpack and GFX libraries and written to using analog write. Scrolling text was implemented using a cursor offset and character print while the smiley face visual was done with a standard 2D-bitmap. The Bluetooth connection was implemented as done in a previous lab, using a master and slave module. Questions and answers are stored in the same sized char arrays. The code steps through the array, and after a question is displayed on the LED matrix, the user may select “Yes” or “No” by pressing the buttons. The inner loop waits until the user locks in their answer by waving over the light sensor. After checking if the answer matches the matching index in the answers array, the master module sends the corresponding note frequency to the slave module. The sound is then emitted to the buzzer and the visual feedback is displayed.
The project wasn’t intended to be turned into a real project that could be sold, but rather it was a way for us to learn new hardware skills and practice integrating hardware and software. That being said, our Guitar Hero project was based off of an existing product that was sold at mass, and our trivia project was analogous to the hardware and software systems used by many game shows, which display questions using software and often LED displays, have buttons/buzzers for user reaction and user input (e.g. the buzzer used when two people are competing to answer a trivia question), and related audio that corresponds to the positive and negative reactions of correct and incorrect participant responses. If we needed to sell our project for economic reasons, we could place a case over the internal hardware and only expose the two buttons, scrolling display, and submit sensor, delivering a much cleaner and more secure UI.
As for improvements to our project, it would certainly be interesting to order the proper matrix and implement the rest of Guitar Hero, as we were more excited about this idea than we were about implementing a trivia game. Fortunately, as mentioned prior, the skills that we learned from building this trivia game should translate easily if we were to order the larger LED-matrix and finish our first implementation of Guitar Hero. Specifically, the hardware uses the same sensors, the Bluetooth component of our trivia game could extend to provide a negative buzzing sound if a user incorrectly strums or pushes a musical note at the wrong time, and the code that we wrote to display words and animations could easily be changed to instead display streams of notes.