Introduction: Fully 3D Printed Arduino-Based Piano
Being a PhD student in pursuit of 'click-to-manufacture' technology in the realm of 3D Printing, I decided it would be cool to demonstrate a simple concept of the potential of Additive Manufacture in this area - whilst keeping it fun!
I designed, printed and assembled a circuit for a fully 3D Printed piano! Whilst I plan to match the tone frequency up with the actual notes in the future, I think the result is still pretty nifty and could potentially lead onto other printed instruments!
I designed this in Fusion 360, which enables you to easily print in multi-material - allowing for conductive and non-conductive filaments to be used together to form a functional object. The stl was then exported to Cura and printed on an Ultimaker 3 - but you can use any printer with multi-material capabilities (and potentially single extrusion with some assembly).
On with the show!
Step 1: You Will Need...
1. Arduino Uno microcontroller
2. A compatible speaker or buzzer - it's up to you!
3. Resistors: 7 x 1MOhm, 1 x 220 Ohm
4. A 3D printer capable of dual-extrusion.
5. Filament: A Standard PLA and Protopasta Conductive PLA (or similar).
6. A can-do attitude.
Step 2: Designing for Multi-Material in Fusion 360
I have made a separate Instructable for this, as I assume you'll want to print your own designs!
Step 3: Printing
Printing can potentially take some patience and experimentation. Remember, if you have oozing problems the chances are that you will have a short across your sensors - causing significant cross-talk! I've also included the original STLs for convenience - but I encourage you to make your own and let me know how it goes!
Step 4: Arduino Setup
Assemble as per the image above.
Dependent on what audio device you are using, ensure you don't overload the pin. I have used an 4 Ohm 3W speaker output, and have put a 220 Ohm resistor in series to limit the current.
Step 5: Arduino Code
Use the attached sketch. You will also need Paul Stoffregen's CapacitiveSensor library found here: https://github.com/PaulStoffregen/CapacitiveSensor
Step 6: Check Theshold Values
If you struggle to get your piano to play a tone, check the threshold values I've set as potentially there is some variance. Check the serial plotter to see what touched and untouched values you get for each sensor (as I've done above!).
I seem to get pretty consistent touch readings across all the sensors, but there will be some variation based on your slicer settings, material and printer.