Animatronic Robotic Hand
Animatronic Robotic Hand
Project Block Diagram
6 Volts Battery Pack
Toggle Switch
Servo Motor
470 Ohm Resistor
100 µF Electrolyte Capacitor(Decoupling Capacitors)
Red LED
Servo Motors Circuit Diagram
Flex Sensor
10KOhm Resistor
Flex Sensor Circuit Diagram
Operating Voltage Range : 4.8V TO 6.0VWeight: 45.5g (1.6oz)Dimensions: 40.6 x 19.8 x 36.6mm (1.59 x 0.77 x 1.44in)Stall Torque: 3.3 kg.cm (45.82 oz.in)Operating Speed : 0.21sec/60 deg AT NO LOADOperating Angle : 180 degControl System: Pulse width control
HSS-422 Servo Motor Specifications
Life Cycle: >1 million
Thickness: 0.43mm (0.017")
Flat Resistance: 10K Ohms ±30%Bend Resistance: minimum 2 times greater than the flat resistance at 180° pinch bendPower Rating : 0.5 Watts continuous; 1 WattPeak
Temperature Range: -35°C to +80°C
Flex Sensor Specifications
#include <Servo.h>
Servo Servo_1;Servo Servo_2;Servo Servo_3;Servo Servo_4;Servo Servo_5;
int Voltmeter= 13;int flexPin1= 1;int flexPin2= 2;int flexPin3= 3;int flexPin4= 4;int flexPin5= 5;
int flexVal1;int flexVal2;int flexVal3;int flexVal4;int flexVal5;
int angle1;int angle2;int angle3;int angle4;int angle5;int voltReading;
void setup(){ Servo_1.attach(5); Servo_2.attach(6); Servo_3.attach(9); Servo_4.attach(10); Servo_5.attach(11);
pinMode(Voltmeter, OUTPUT); Serial.begin(9600);}
Import servo library
Variable declaration
Associating the servos to specific Arduino PMW pins
Initializing digital pin 13 as an Output
Initializing the serial port
Arduino Code Explained
Serial.print(", angle: "); Serial.print(angle1);
Servo_1.write(angle1); Servo_2.write(angle2); Servo_3.write(angle3); Servo_4.write(angle4); Servo_5.write(angle5); if(voltReading >650) { digitalWrite(Voltmeter, HIGH); } else if (voltReading < 650) { digitalWrite(Voltmeter, LOW); } }
void loop()
{ voltReading=analogRead(0); flexVal1=analogRead(flexPin1); flexVal2=analogRead(flexPin2); flexVal3=analogRead(flexPin3); flexVal4=analogRead(flexPin4); flexVal5=analogRead(flexPin5); Serial.print("\nFLEX_Val: "); Serial.print(flexVal1);
angle1 = map(flexVal1, 390,455, 180, 0); angle2 = map(flexVal2, 113,130, 180, 0); angle3 = map(flexVal3, 300,340, 180, 0); angle4 = map(flexVal4, 350,415, 180, 0); angle5 = map(flexVal5, 325,390, 180, 0);
Arduino Code Explained
Apply Analog input values to variables
Displays the analog voltage of flexVal1 on the serial monitor
Mapping flex sensorvalues to angle Variables (10 bit values)
Displays angle of rotation forservo 1 on the serial monitor
Rotates servo motors according to the given value of each “angle” variables
If the voltage reading isabove 3.2V the LED is turned on
If the voltage reading isbelow 3.2V the LED is turned off
Thank You!