Appendix A: Permissions

The group approves this report for inclusion on the course website.

The group approves the video for inclusion on the course youtube channel.

Appendix B: Commented Program Listing

GitHub repository with code

Appendix C: Schematics

Figure 1: PIC32 Pinout             Figure 2: Shift Register Schematic

Figure 3: PIC32 Big Board Schematic

  1. Figure 1: The ROW and COL labels are inputs from our keyboard matrix. We used Port B for the columns. Ports Y and Z are connected to the port expander on the PIC32 Big Board. We used Port Y for reading rows. Finally, we used Port Z for our shift registers. All of the shift registers ran on the same clocks, and each data line went to a different shift register.
  2. Figure 2: Here you can see a single shift register schematic. We had four of these in our system. The pin labels correspond with those from the Big Board connector.
  3. Figure 3: This is the PIC32 Big Board provided from the class. We did not design this but it gives a picture of where the connections in Figure 1 are going to.

Appendix D: Parts

Part Part Name Vendor Price
LEDs EDGELEC 5mm LED Amazon $6.19
Resistors 470 Ohm Resistor Amazon (included with LEDs)
Shift Registers SN74HC595 Amazon (Texas Instruments) $4.84
Keyboard Alesis Melody 32 Amazon (Alesis) $50.15
Big Board PIC32 Big Board ECE4760 Lab $10
TFT Display Adafruit Color LCD Model 1480 ECE4760 Lab $10

Appendix E: Task Distribution

Elias Hanna Marek Chmmielewski Matias Goldfeld
  1. Drilled holes for LEDs
  2. Hot glued LEDs
  3. Spliced wires to LED leads
  4. Moved prototype shift register design to perfboard
  5. Spliced into existing keyboard matrix
  6. Helped map and debug row and column reading
  7. Taught other members about music
  8. Helped design music representation format
  9. Wrote songs for the program to use
  1. Prototyped shift register circuit on breadboard
  2. Helped splice wires to LED leads
  3. Designed and printed TFT display enclosure
  4. Soldered resistors and LED connetions to perfboard
  5. Helped map and debug row and column reading
  6. Cut and drilled keyboard case for wiring
  7. Mounted TFT enclosure
  1. Wrote code to poll and debounce key presses from the input matrix
  2. Wrote procedures to bit bang the shift registers to set the LED outputs
  3. Wrote Python script to parse songs into C data structures
  4. Wrote code to play the music in line with the input and LEDs
  5. Displayed sheet music from song data
  6. Implemented the main menu and freeplay mode

References

  1. Shift Register Datasheet: SN74HC595
  2. PIC32 Users Guide: Users Guide
  3. ECE4760 Course Website Materials