Tuesday, November 26, 2013

Parts Ordered and Arduino Code


   Over the past week the group has met and decided on what type of servo motors and flex sensors that were to be used. The parts have been purchased and have either arrived or are currently en route. We will use 2.2" flex sensors manufactured by Spectra Symbol. The servo motors to be used are MG946R servo motors manufactured by TowardPro. We also ordered some male to female jumper wires so there was enough length between the robotic hand and the glove to be comfortable to wear, and some 22k resistors to save space from chaining 10k resistors together on the bread board. Overall the cost of the extra pieces came to about $100.

Below is the code that will be used in the arduino to control the servo motors to create movements in the hand, some values might be calibrated after testing to work better with the final product:
 
//Define sensors and servos
#include <Servo.h> //Includes servo library
Servo finger1, finger2, finger3, finger4, finger5;

 
int servoPin1 = 5;
int servoPin2 = 6;
int servoPin3 = 9;
int servoPin4 = 10;
int servoPin5 = 3;

int flexPin1 = A0;
int flexPin2 = A1;
int flexPin3 = A2;
int flexPin4 = A3;
int flexPin5 = A4;

 void setup()

{
 //Attach the servo objects to their respective pins

  finger1.attach(servoPin1);
  finger2.attach(servoPin2);
  finger3.attach(servoPin3);
  finger4.attach(servoPin4);
  finger5.attach(servoPin5);

 
  // set each servo pin to output;
pinMode(servoPin1, OUTPUT);
pinMode(servoPin2, OUTPUT);
pinMode(servoPin3, OUTPUT);
pinMode(servoPin4, OUTPUT);
pinMode(servoPin5, OUTPUT);

  //Set each flex sensor pin to input: this is necessary
 pinMode(flexPin1, INPUT);
 pinMode(flexPin2, INPUT);
 pinMode(flexPin3, INPUT);
 pinMode(flexPin4, INPUT);
 pinMode(flexPin5, INPUT);

}

 
void loop()

{

  //Defines analog input variables
  int flex1 = analogRead(flexPin1);
  int flex2 = analogRead(flexPin2);
  int flex3 = analogRead(flexPin3);
  int flex4 = analogRead(flexPin4);
  int flex5 = analogRead(flexPin5);


  //Defines "pos" variables as being proportional to the flex inputs.

 int pos1 = map(flex1, 400, 700, 0, 180);
 pos1 = constrain(pos1, 0, 180);
 int pos2 = map(flex2, 400, 700, 0, 180);
 pos2 = constrain(pos2, 0, 180);
 int pos3 = map(flex3, 400, 700, 0, 180);
 pos3 = constrain(pos3, 0, 180);
int pos4 = map(flex4, 480, 640, 0, 180);
pos4 = constrain(pos4, 0, 180);
int pos5 = map(flex5, 400, 700, 0, 180);
pos5 = constrain(pos5, 0, 180);

 
  //Tells servos to move by the amount specified in the "pos" variables
 finger1.write(pos1);
 finger2.write(pos2);
finger3.write(pos3);
 finger4.write(pos4);
 finger5.write(pos5);

}




No comments:

Post a Comment