After being introduced to the prompt for this project, our group decided that we wanted to try to take apart and reassemble a keyboard sustain pedal using Arduino. This seemed like a simple enough concept that actually ended up being a little too simple– after taking apart the pedal on our first work day, we found that there wasn’t a PCB in the mechanism itself and it actually just operated like a big switch, opening and closing a single circuit to control the state of the sustain.
Taking apart the Yamaha FC5 Sustain Footswitch Pedal
Testing the voltage of the pedal’s circuit using the multimeter
At this point we did get a little stumped as to how we should proceed with the project– automating this exact mechanism with Arduino seemed a little bit too simple, and after testing the voltage reading of the circuit and seeing that it was 5 volts, we weren’t sure if we needed to use a mosfet or solder the pins of our 3.3 V Arduino in order to get the adequate amount of power. After putting our heads together for a bit, we decided that we would challenge ourselves by creating an entirely new sustain petal mechanism and casing altogether, using a Servo motor controlled by a digital UI to replace the physical action of pressing down on the pedal, which would also allow us to add increased functionality through time-based sustain settings.
Diagrams that guided our planning process, showing the current power flow of the sustain pedal as well as our plan for our take-apart project.
Our team approached the work by first working on the serial communication aspect between ProtoPie and Arduino. Shiva and I worked on designing the interface in Figma before bringing it into ProtoPie to incorporate the interaction aspects, which we created using triggers and conditions linked to each of the button components. We were able to make the buttons shrink and grow based on the user’s tap, which was a little playful interaction that we felt made our interface look a little bit more polished and responsive of the state change. We had each of the buttons send an individual message and value (seen below) that would be used to trigger the appropriate response from our Arduino and Servo.
Screenshots of our interface preview and the interactions that we set up using ProtoPie
Messages and values that our Pie sent when each of the buttons was pressed
While we were working on this, Dan was working on setting up the circuit and writing the Arduino code that would receive the messages from ProtoPie and signal to the Servo to rotate for the appropriate amount of time.
After he finished the code, we ran into another little hiccup in trying to connect the two programs. Everything looked like it was set up correctly when we compared our code to the class examples, slides, and recording, but then we finally realized after a few conversations with shop staff that we didn’t select the correct port and run the Arduino in ProtoPie Connect before running the Arduino code in the editor. After we set that part up correctly, our Servo was successfully controlled by our digital interface!
Initial and revised sketches of our enclosure and its internal components
Using the laser cutter to print out the parts of our box
We came back the next day ready to start fabricating the casing/enclosure for our circuit! We used a box file from the internet using our desired dimensions after measuring our internal components laid out and used the laser cutter and acrylic solvent to put it together.
While Dan and Shiva worked on the box assembly, I got started on soldering our Arduino and the servo pins to the mini-PCB. It was our group’s first time using a breadboard without the power and ground strips so we were a little bit confused on how to wire it initially, but after we realized that there was no difference from those strips and the regular horizontal strips in a breadboard other than their designation, it was easy for us to scale down our initial circuit to fit on the mini-PCB.