After getting a bunch of promotional buttons, I decided to spend countless hours to design and build a machine to give them out for me.
Step 1: Video
The build process is outlined in this video, including how I tried to use a magnetic escapement instead of the 3D-printed "blades" that I eventually settled on.
The concept of the device is known as an escapement, and the top servo holds most of the buttons back, while the bottom servo drops one at a time.
Step 2: Parts Needed
Parts list is pretty simple:
- 2 standard hobby servos (Amazon 4-pack)
- Capacitive touch sensor (Amazon)
- Arduino Uno
- Arduino sensor shield
- Capacitor for sensor shield
- 3D-printed slide
- Screws for servo attachment
Note strange initial sketch. Also considered a linkage-driven pusher mechanism.
Amazon links are affiliate.
Step 3: Print Slide
Files for the slide can be found on GitHub here. Note that you'll need to file things down to get things to slide smoothly. The three sections are attached together with CNA glue (AKA super glue), and the holes for servo attachment will need to be tapped (best done before gluing everything together).
Buttons used were 1.25" diameter from Sticker Mule. This code/link will get you and I a $10 discount on an order if you so desire.
Step 4: Make Base and Assemble
I won't outline the base making process exactly, as it could be done many different ways. The one thing you'll need to watch out for is that there's not too much space for the capacitive sensor to act through. I made a cavity with a router to take the spacing down to about 1/8 of an inch.
Step 5: Wire and Program
The electrical setup and code is very simple. Just two outputs for each servo and an input for the capacitive touch sensor. Code is found here.
Note capacitor hooked into sensor shield to help with power spikes. Not sure if this is necessary, and transistors would be a better solution anyway. Feel free to improvise/improve.
Step 6: Enjoy!
So far, the device has survived one Mini Maker Faire, and hopefully it'll make it's way to many others!