Robotic hand

Build your own robotic hand controller

Components

1 Arduino nano

1 Power Supply

Supplies

Wires

Wire Striper Tool

5 Elastrolink Vein

 

 

USB Cable

Cutting Pliers

1 Gatonic robotic hand ROBO 142/3

Bakelite circuit board

Soldering Iron Station

Step 1 : Sensor Test

Connect the DATA wire (yellow) to A0, the red to 5V and the black one to GND

void setup() {
    Serial.begin(9600);
}
Vois loop (){
    Serial.println(analogRead(A0));
}

This sketch will allow you to check if your vein is working correctly.
When you’re not touching the vein it should print around 1024.
After that you can pinch the end of the vein and store the result then do the same thing with the beginning. Like that you will know the limit of your sensor.

Step 2 : 1 Elastrolink 1 servo

First we have got to try to control one servos motor with one Elastrolink
We are going to connect the motor to the pin 12 and the sensor to the pin A0

Program

#include <Servo.h>
Servo forefinger;
int bp1 = A0;

void setup()
{
    Serial.begin(9600);
    forefinger.attach(12);
    forefinger.write(140);
    pinMode(bp1,INPUT);
}

void loop()
{
/* —- forefinger — */
    if (analogRead(bp2) < 10 ){ forefinger.write(140); }
    if (analogRead(bp2) > 10 && analogRead(bp2) < 12 ){ forefinger.write(130); }
    if (analogRead(bp2) > 12 && analogRead(bp2) < 14 ){ forefinger.write(120); }
    if (analogRead(bp2) > 14 && analogRead(bp2) < 16 ){ forefinger.write(110); }
    if (analogRead(bp2) > 16 && analogRead(bp2) < 18 ){ forefinger.write(100); }
    if (analogRead(bp2) > 18 && analogRead(bp2) < 20 ){ forefinger.write(90); }
    if (analogRead(bp2) > 20 && analogRead(bp2) < 22 ){ forefinger.write(80); }
    if (analogRead(bp2) > 22 && analogRead(bp2) < 24 ){ forefinger.write(70); }
    if (analogRead(bp2) > 24 && analogRead(bp2) < 26 ){ forefinger.write(60); }
    if (analogRead(bp2) > 26 ){ forefinger.write(50); }
}

Result

When the sensor is released the finger is up

When the sensor is half bend, the finger is also half bend

Finally when the sensor is completely bend the finger is closed

Step 3 : Multiple the sensor and fingers

Now we are going to add the other sensors and fingers

#include <Servo.h>

Servo forefinger;
Servo thumb;
Servo majeur;
Servo annulaire;
Servo auriculaire;

int bp1 = A4;
int bp2 = A3;
int bp3 = A2;
int bp4 = A1;
int bp5 = A0;

void setup()
{
Serial.begin(9600);

thumb.attach(8);
forefinger.attach(12);
majeur.attach(11);
annulaire.attach(10);
auriculaire.attach(9);

thumb.write(160);
forefinger.write(140);
majeur.write(150);
annulaire.write(130);
auriculaire.write(150);

pinMode(bp1,INPUT);
pinMode(bp2,INPUT);
pinMode(bp3,INPUT);
pinMode(bp4,INPUT);
pinMode(bp5,INPUT);
}

void loop()
{
/* —- thumb — */
if (analogRead(bp1) < 10 ){ thumb.write(140); }
if (analogRead(bp1) > 10 && analogRead(bp1) < 12 ){ thumb.write(130); }
if (analogRead(bp1) > 12 && analogRead(bp1) < 14 ){ thumb.write(120); }
if (analogRead(bp1) > 14 && analogRead(bp1) < 16 ){ thumb.write(110); }
if (analogRead(bp1) > 16 && analogRead(bp1) < 18 ){ thumb.write(100); }
if (analogRead(bp1) > 18 && analogRead(bp1) < 20 ){ thumb.write(90); }
if (analogRead(bp1) > 20 && analogRead(bp1) < 22 ){ thumb.write(80); }
if (analogRead(bp1) > 22 && analogRead(bp1) < 24 ){ thumb.write(70); }
if (analogRead(bp1) > 24 && analogRead(bp1) < 26 ){ thumb.write(60); }
if (analogRead(bp1) > 26 ){ thumb.write(50); }

/* —- forefinger — */
if (analogRead(bp2) < 10 ){ forefinger.write(140); }
if (analogRead(bp2) > 10 && analogRead(bp2) < 12 ){ forefinger.write(130); }
if (analogRead(bp2) > 12 && analogRead(bp2) < 14 ){ forefinger.write(120); }
if (analogRead(bp2) > 14 && analogRead(bp2) < 16 ){ forefinger.write(110); }
if (analogRead(bp2) > 16 && analogRead(bp2) < 18 ){ forefinger.write(100); }
if (analogRead(bp2) > 18 && analogRead(bp2) < 20 ){ forefinger.write(90); }
if (analogRead(bp2) > 20 && analogRead(bp2) < 22 ){ forefinger.write(80); }
if (analogRead(bp2) > 22 && analogRead(bp2) < 24 ){ forefinger.write(70); }
if (analogRead(bp2) > 24 && analogRead(bp2) < 26 ){ forefinger.write(60); }
if (analogRead(bp2) > 26 ){ forefinger.write(50); }

/* — MAJEUR — */
if (analogRead(bp3) < 10 ){ majeur.write(150); }
if (analogRead(bp3) > 10 && analogRead(bp3) < 40 ){ majeur.write(136); }
if (analogRead(bp3) > 40 && analogRead(bp3) < 70 ){ majeur.write(122); }
if (analogRead(bp3) > 70 && analogRead(bp3) < 100 ){ majeur.write(108); }
if (analogRead(bp3) > 100 && analogRead(bp3) < 130 ){ majeur.write(94); }
if (analogRead(bp3) > 130 && analogRead(bp3) < 160 ){ majeur.write(80); }
if (analogRead(bp3) > 160 && analogRead(bp3) < 190 ){ majeur.write(66); }
if (analogRead(bp3) > 200 ){ majeur.write(52); }

/* — ANNULAIRE — */
if (analogRead(bp4) < 10 ){ annulaire.write(130); }
if (analogRead(bp4) > 10 && analogRead(bp4) < 15 ){ annulaire.write(121); }
if (analogRead(bp4) > 15 && analogRead(bp4) < 20 ){ annulaire.write(112); }
if (analogRead(bp4) > 20 && analogRead(bp4) < 25 ){ annulaire.write(103); }
if (analogRead(bp4) > 25 && analogRead(bp4) < 30 ){ annulaire.write(94); }
if (analogRead(bp4) > 30 && analogRead(bp4) < 35 ){ annulaire.write(85); }
if (analogRead(bp4) > 35 && analogRead(bp4) < 40 ){ annulaire.write(76); }
if (analogRead(bp4) > 40 && analogRead(bp4) < 45 ){ annulaire.write(67); }
if (analogRead(bp4) > 45 && analogRead(bp4) < 50 ){ annulaire.write(58); }
if (analogRead(bp4) > 50 ){ annulaire.write(49); }

/* — AURICUALIRE — */
if (analogRead(bp5) < 10 ){ auriculaire.write(140); }
if (analogRead(bp5) > 10 && analogRead(bp5) < 14 ){ auriculaire.write(130); }
if (analogRead(bp5) > 14 && analogRead(bp5) < 16 ){ auriculaire.write(120); }
if (analogRead(bp5) > 16 && analogRead(bp5) < 18 ){ auriculaire.write(110); }
if (analogRead(bp5) > 18 && analogRead(bp5) < 20 ){ auriculaire.write(100); }
if (analogRead(bp5) > 20 && analogRead(bp5) < 22 ){ auriculaire.write(90); }
if (analogRead(bp5) > 22 && analogRead(bp5) < 24 ){ auriculaire.write(80); }
if (analogRead(bp5) > 24 && analogRead(bp5) < 26 ){ auriculaire.write(70); }
if (analogRead(bp5) > 26 && analogRead(bp5) < 28 ){ auriculaire.write(60); }
if (analogRead(bp5) > 28 ){ auriculaire.write(50); }

Serial.print(analogRead(bp1));
Serial.print(“\t”);
Serial.print(analogRead(bp2));
Serial.print(“\t”);
Serial.print(analogRead(bp3));
Serial.print(“\t”);
Serial.print(analogRead(bp4));
Serial.print(“\t”);
Serial.print(analogRead(bp5));
Serial.println();
}