Back to the Breadboard
Since the PCBs from OSHPark were not working properly, I decided to go back and setup the project on the breadboard again. I could not get the project to work properly with the components setup as per the schematic.
After studying the datasheet for the MCP23017, I discovered that the chip has an internal pull-up resistor. Armed with this information, I tried wiring the board differently:
Now the keyboard was working properly but another problem occurred: the low C on the board would play two distinct notes and the B and high C would not respond at all.
I checked the wiring, breadboard, the code, and other MCP23017 chips with no change in the responsiveness of the three keys. I began to suspect one of the libraries that I was using to code the project was not working as promised.
My first assumption was that the library that I used to debounce the buttons on the MCP23017 was broken. It hasn’t been updated in four years so maybe the code was broken. I removed the library without success.
After more tinkering, I then suspected the Adafruit MCP23017 library. While I was researching how to communicate to the MCP23017 via the Wire library, Arduino popped up a message that some of the libraries were out dated and required updates. I followed the link and discovered that the library used to communicate to the Bluetooth module was two versions out of date. Once the library had been updated and the code pushed to the Feather board, all keys responded properly!
Back to the Drawing Board
After handling the printed circuit boards, I discovered that the keyboard would be too wide for my thumbs to reach the middle of the board comfortably. In addition, the outer case was difficult to 3D print on an Ultimaker 3 due to its size and shape. Therefore, I decided to reduce the number of keys from an octave and a third to just an octave. Plus, to reduce the height of the soldered PCB, the Feather board would be removed from the PCB, mounted in the case separately, and then connected via a ribbon cable.
Armed with a working breadboard prototype and plans to shrink the PCB, I updated the schematic:
Then I redesigned the PCB and sent it to OSHPark for printing: