Introduction: Froggy World 5 the Coffee Gripper
Step 1:
Arduino
Arduino motor shield
(2) Hitec HS-645MG ultra torque servo motors (amazon.com)
Vaccum pump https://www.sparkfun.com/products/10398
Coffee (I used Maxwell house, original roast)
12" round balloon
Lazy Susan bearings http://www.amazon.com/gp/product/B002TIKEQ6/ref=oh_details_o02_s00_i00?ie=UTF8&psc=1
Cast Acrylic tube http://www.amazon.com/gp/product/B0070ZQGRE/ref=oh_details_o02_s00_i01?ie=UTF8&psc=1
Two feet of 3/8 inch OD, 1/4 inch ID tubing
Breadboard
Various 3D printed parts, design and print files at:
http://www.thingiverse.com/thing:68316
12 volt 1 amp power supply
5 volt 1 amp power supply
Step 2:
The more it surrounds the target and the greater the vacuum, the greater the chances for a successful grip.
Since we are working with minimum "push" (servo motor 10 inches away) and low vacuum (low cost pump)--we have to do everything possible to help the system.
Reducing the thickness of the balloon wall is a first step. Blow up a "12 inch" balloon and clamp it in the inflated position overnight. It will stretch.
Step 3:
Step 4:
Step 5:
Step 6:
Insert one end of the plastic tube into the top of the printed gripper--it should just press in.
Step 7:
Step 8:
This will allow removal of the gripper if the balloon fails or if you want to change the amount of coffee contained.
Step 9:
Step 10:
Step 11:
Step 12:
Step 13:
Step 14:
Step 15:
Step 16:
Step 17:
Step 18:
#include <Servo.h>
Servo lift;
Servo rotate;
int val=0;
int start=10;
int next=7;
int dummy=0;
const int pwmA=3;
const int brakeA=9;
const int dirA=12;
void setup()
{
lift.attach(2);//lift on pin2
rotate.attach(5);//rotate on pin 5
pinMode(start,INPUT);//pin 10 as input
pinMode(next,OUTPUT);//pin 7 output
digitalWrite(next, HIGH);
lift.write(80);//upright
rotate.write(135);//face track
delay (2000);
}
void loop()
{
val=digitalRead(start);
if(val==LOW)
{dummy=1;
lift.write(85);
delay(100);
lift.write(90);
delay(100);
lift.write(95);
delay(100);
lift.write(100);
delay(100);
lift.write(105);
delay(100);
lift.write(110);
delay(100);
lift.write(115);
delay(100);
lift.write(120);
delay(100);
lift.write(125);
delay(100);
lift.write(130);
delay(100);
lift.write(135);
delay(100);
lift.write(140);
delay(100);
lift.write(145);
delay(100);
lift.write(150);
delay(100);
lift.write(155);
delay(100);
lift.write(160);
delay(100);
lift.write(165);
delay(100);
lift.write(170);
delay(100);
pinMode(dirA,OUTPUT);
pinMode(brakeA,OUTPUT);
digitalWrite(dirA,LOW);//forward
digitalWrite(brakeA,LOW);//release brake
analogWrite(pwmA,255);//motor on max
delay(20000);
lift.write(145);
delay(100);
lift.write(135);
delay(100);
lift.write(125);//lift slightly
delay(800);
rotate.write(130);
delay(100);
rotate.write(125);
delay(100);
rotate.write(120);
delay(100);
rotate.write(115);
delay(100);
rotate.write(110);
delay(100);
rotate.write(105);
delay(100);
rotate.write(100);
delay(100);
rotate.write(95);
delay(100);
rotate.write(90);
delay(100);
rotate.write(85);
delay(100);
rotate.write(80);
delay(100);
rotate.write(75);
delay(100);
rotate.write(70);
delay(100);
rotate.write(65);
delay(100);
rotate.write(60);
delay(100);
rotate.write(55);
delay(100);
rotate.write(50);
delay(100);
lift.write(140);
delay(100);
lift.write(145);
delay(100);
lift.write(150);//at catapult
delay(1000);
analogWrite(pwmA,0);
digitalWrite(brakeA,LOW);
delay(3000);
lift.write(80);
delay(1000);//upright
rotate.write(75);
delay(200);
rotate.write(100);
delay(200);
rotate.write(110);
delay(200);
rotate.write(120);
delay(200);
rotate.write(130);
delay(100);
rotate.write(135);
delay(100);
dummy=0;
digitalWrite(next,LOW);
delay(1000);
digitalWrite(next,HIGH);
}}