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
- 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.
- 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.
- 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 |
- Drilled holes for LEDs
- Hot glued LEDs
- Spliced wires to LED leads
- Moved prototype shift register design to perfboard
- Spliced into existing keyboard matrix
- Helped map and debug row and column reading
- Taught other members about music
- Helped design music representation format
- Wrote songs for the program to use
|
- Prototyped shift register circuit on breadboard
- Helped splice wires to LED leads
- Designed and printed TFT display enclosure
- Soldered resistors and LED connetions to perfboard
- Helped map and debug row and column reading
- Cut and drilled keyboard case for wiring
- Mounted TFT enclosure
|
- Wrote code to poll and debounce key presses from the input matrix
- Wrote procedures to bit bang the shift registers to set the LED outputs
- Wrote Python script to parse songs into C data structures
- Wrote code to play the music in line with the input and LEDs
- Displayed sheet music from song data
- Implemented the main menu and freeplay mode
|
References
- Shift Register Datasheet: SN74HC595
- PIC32 Users Guide: Users Guide
- ECE4760 Course Website Materials