For a peek into the development go ahead and read all the project logs, that's where all the decisions happened.
After you gather all the items on the components list and print your parts it's time to start assembly and wire it all up! Here is the hookup diagram:
It's pretty simple. Notice that I've got an adafruit Power Boost 1000 in there instead of the 5V boost supply on the component list. The no-name boost supply I bought off ebay didn't have a fritzing component, but the Power Boost 1000 is functionally the same so it is a good stand in. If you were going to use a Power Boost 1000 then you'll need to adjust the size of the hole that made for the supply.
As you are assembling the 3D printed parts you will notice that all the screw holes are either slightly under sized or over sized. The 2-56 screws will self thread into the under sized holes and spin freely in the over sized holes. This allows the screw to securely hold the screwdriver tray while the arm that actuates the screwdriver tray can move freely. If your parts aren't going together like that then you either need to adjust your printer or adjust the sizes of the screw holes. If you are printing on UP! Mini you should have no problem, that's what I printed everything on.
Here's the code to make your Robotic Third Hand move:
// ThirdHand test script // by Tim Giles <www.wildcircuits.com> //servo is on Pin8 //button is on Pin3 and has the pullup enabled #include <Servo.h> Servo ServoA; int Angle = 10; int AngleClosed = 10; int AngleOpen = 120; void setup() { ServoA.attach(8); pinMode(3,INPUT_PULLUP); } void loop() { //update the servo position ServoA.write(Angle); delay(1); //check if the button is pushed if (digitalRead(3) == 0) { //debounce while (digitalRead(3) == 0){ delay(1); } //set the servo to it's open position Angle = AngleOpen; ServoA.write(Angle); //hold the servo in this position to give the user time //to grab the screwdriver delay(2000); //set the servo to it's closed position Angle = AngleClosed; ServoA.write(Angle); } }
NOTE: While programming I would recommend disconnecting your battery. Otherwise the 5V boost supply will be back feeding into your computer and may do bad things. I did all my programming of the Trinket Pro with the battery disconnected.
ALSO NOTE: If your USB cable that you are programming is too long / too wimpy, you may get some weird behavior when finished programming and the servo attempts to move. This is from too much voltage drop in your USB cable which is causing the Trinket Pro to reset when servo tries to move.
Impressive!