Adki Nishanth
Published © CERN-OHL

Diy robo arm

Automated mechanical arm for picking up small objects.

IntermediateWork in progress310
Diy robo arm

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
Jumper wires (generic)
Jumper wires (generic)
×1
SG90 Micro-servo motor
SG90 Micro-servo motor
×1
Servo Module (Generic)
×1
SparkFun Solder-able Breadboard - Mini
SparkFun Solder-able Breadboard - Mini
×1
USB Cable, USB Type C Plug
USB Cable, USB Type C Plug
×1

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)
Solder Wire, Lead Free
Solder Wire, Lead Free
Solder Flux, Soldering
Solder Flux, Soldering

Story

Read more

Custom parts and enclosures

Arm

Schematics

Circuit of robo-arm

Code

robo_arm

C/C++
//Nishanth adki
#include <Servo.h>
Servo myservo_b;
Servo myservo_m;
Servo myservo_u;
Servo myservo_p; 

int pos1 = 0;
int pos2 = 0; 
int pos3 = 0;
int pos4 = 0;
int flag1=0;

void pick()
{
  while(pos1>0)
  {
  myservo_b.write(pos1--);
  delay(15);
  }
  delay(1000);
  while(pos3>70)
  {
  myservo_u.write(pos3--);
  delay(15);
  }
  delay(1000);
  while(pos4>0)
  {
  myservo_p.write(pos4--);
  delay(15);
  }
  delay(1000);
  
  while(pos2<180)
  {
  myservo_m.write(pos2++);
  delay(15);
  }
  delay(1000);
  
  while(pos4<90)
  {
  myservo_p.write(pos4++);
  delay(15);
  }
  delay(1000);
  
  while(pos2>120)
  {
    myservo_m.write(pos2--);
    delay(15);
  }
  delay(1000);
  while(pos3<90)
  {
  myservo_u.write(pos3++);
  delay(15);
  }
  delay(1000);
  while(pos1<100)
  {
    myservo_b.write(pos1++);
    delay(15);
  }
}

void place()
{
  while(pos1<180)
  {
    myservo_b.write(pos1++);
    delay(15);
  }
  delay(1000);
  while(pos2<170)
  {
    myservo_m.write(pos2++);
    delay(15);
  }
  delay(1000);
  while(pos3>60)
  {
    myservo_u.write(pos3--);
    delay(15);
  }
  delay(1000);
  while(pos4>10)
  {
    myservo_p.write(pos4--);
    delay(15);
  }
  delay(2000);
  while(pos3<100)
  {
    myservo_u.write(pos3++);
    delay(15);
  }
  delay(1000);
  while(pos4<90)
  {
    myservo_p.write(pos4++);
    delay(15);
  }
  delay(1000);
  while(pos2>120)
  {
    myservo_m.write(pos2--);
    delay(15);
  }
  delay(1000);
  while(pos1>90)
  {
    myservo_b.write(pos1--);
    delay(15);
  }
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
myservo_b.attach(4);
myservo_m.attach(5);
myservo_u.attach(6);
myservo_p.attach(7);
init_pos();
}

void loop()
{ 
  if(Serial.available()>0)
  {
    a=Serial.read();
  }
  if(a=='p' && flag1==0)
  {
    pick();
    flag1=1;
  }
  if(a=='r' && flag1==1)
  {
    place();
    flag1=0;
  }
}

Credits

Adki Nishanth
1 project • 0 followers
M.Tech CS student at JNTUH Hyderabad. [Jawaharlal Nehru Technological University Hyderabad]

Comments