@@ -18,6 +18,7 @@ int angleR;
1818int angleL;
1919int angleBottom;
2020int l_movementTrigger = 0 ;
21+ double g_interpol_val_arr[50 ];
2122
2223uArmClass::uArmClass ()
2324{
@@ -65,15 +66,15 @@ void uArmClass::writeAngle(byte servo_rot_angle, byte servo_left_angle, byte ser
6566 int servo_2_angle_execute = inputToReal (SERVO_LEFT_NUM ,round (servo_left_angle));
6667 int servo_3_angle_execute = inputToReal (SERVO_RIGHT_NUM ,round (servo_right_angle));
6768 int servo_4_angle_execute = inputToReal (SERVO_HAND_ROT_NUM ,round (servo_hand_rot_angle));
68-
69+
6970 if (servo_2_angle_execute < 10 ) servo_2_angle_execute = 10 ;
7071 if (servo_2_angle_execute > 120 ) servo_2_angle_execute = 120 ;
7172 if (servo_3_angle_execute < 10 ) servo_2_angle_execute = 10 ;
7273 if (servo_3_angle_execute > 110 ) servo_2_angle_execute = 110 ;
7374
7475
7576 if (servo_2_angle_execute + servo_3_angle_execute > 150 )
76- {servo_3_angle_execute = 150 - servo_2_angle_execute;}
77+ {servo_3_angle_execute = 150 - servo_2_angle_execute;}
7778
7879 g_servo_rot.write (servo_1_angle_execute);
7980 g_servo_left.write (servo_2_angle_execute);
@@ -118,9 +119,9 @@ double uArmClass::readServoOffset(byte servo_num)
118119
119120 if ((servo_num == 1 )||(servo_num == 2 )||(servo_num == 3 ))
120121 {
121- g_servo_offset = (EEPROM .read (kAddrOffset + (servo_num-1 )*2 +1 ))/10.00 ;
122+ g_servo_offset = (EEPROM .read (LINEAR_START_ADDRESS + (servo_num-1 )*2 +1 ))/10.00 ;
122123
123- if (EEPROM .read (kAddrOffset + (servo_num-1 )*2 ) == 0 )
124+ if (EEPROM .read (LINEAR_START_ADDRESS + (servo_num-1 )*2 ) == 0 )
124125 {g_servo_offset = - g_servo_offset;}
125126
126127 return g_servo_offset;
@@ -177,7 +178,7 @@ void uArmClass::saveDataToRom(double data, int address)
177178
178179double uArmClass::readToAngle (double input_analog, byte servo_num, byte trigger)
179180{
180- int address = 60 +(servo_num-1 )*6 ;
181+ int address = OFFSET_START_ADDRESS +(servo_num-1 )*6 ;
181182
182183 for (int i = 0 ; i<6 ;i++){
183184
@@ -210,19 +211,19 @@ double uArmClass::readAngle(byte servo_num)
210211 {
211212 case SERVO_ROT_NUM :
212213
213- return readToAngle (analogRead (kServoRotReadPin ),SERVO_ROT_NUM ,0 );
214+ return readToAngle (analogRead (SERVO_ROT_ANALOG_PIN ),SERVO_ROT_NUM ,0 );
214215 break ;
215216
216217 case SERVO_LEFT_NUM :
217- return readToAngle (analogRead (kServoLeftReadPin ),SERVO_LEFT_NUM ,0 );
218+ return readToAngle (analogRead (SERVO_LEFT_ANALOG_PIN ),SERVO_LEFT_NUM ,0 );
218219 break ;
219220
220221 case SERVO_RIGHT_NUM :
221- return readToAngle (analogRead (kServoRightReadPin ),SERVO_RIGHT_NUM ,0 );
222+ return readToAngle (analogRead (SERVO_RIGHT_ANALOG_PIN ),SERVO_RIGHT_NUM ,0 );
222223 break ;
223224
224225 case SERVO_HAND_ROT_NUM :
225- return readToAngle (analogRead (kServoHandRotReadPin ),SERVO_HAND_ROT_NUM ,0 );
226+ return readToAngle (analogRead (SERVO_HAND_ROT_ANALOG_PIN ),SERVO_HAND_ROT_NUM ,0 );
226227 break ;
227228
228229 default :
@@ -240,19 +241,19 @@ double uArmClass::readAngle(byte servo_num, byte trigger)
240241 switch (servo_num)
241242 {
242243 case SERVO_ROT_NUM :
243- return readToAngle (analogRead (kServoRotReadPin ),SERVO_ROT_NUM ,trigger);
244+ return readToAngle (analogRead (SERVO_ROT_ANALOG_PIN ),SERVO_ROT_NUM ,trigger);
244245 break ;
245246
246247 case SERVO_LEFT_NUM :
247- return readToAngle (analogRead (kServoLeftReadPin ),SERVO_LEFT_NUM ,trigger);
248+ return readToAngle (analogRead (SERVO_LEFT_ANALOG_PIN ),SERVO_LEFT_NUM ,trigger);
248249 break ;
249250
250251 case SERVO_RIGHT_NUM :
251- return readToAngle (analogRead (kServoRightReadPin ),SERVO_RIGHT_NUM ,trigger);
252+ return readToAngle (analogRead (SERVO_RIGHT_ANALOG_PIN ),SERVO_RIGHT_NUM ,trigger);
252253 break ;
253254
254255 case SERVO_HAND_ROT_NUM :
255- return readToAngle (analogRead (kServoHandRotReadPin ),SERVO_HAND_ROT_NUM ,trigger);
256+ return readToAngle (analogRead (SERVO_HAND_ROT_ANALOG_PIN ),SERVO_HAND_ROT_NUM ,trigger);
256257 break ;
257258
258259 default :
@@ -279,11 +280,19 @@ void uArmClass::calAngles(double x, double y, double z)
279280 z = MATH_L1 - MATH_L4 + BottomOffset;
280281 }
281282
282-
283- g_y_in = (-y-MATH_L2 )/MATH_L3 ;
284- g_z_in = (z - MATH_L1 ) / MATH_L3 ;
285- g_right_all = (1 - g_y_in*g_y_in - g_z_in*g_z_in - MATH_L43 *MATH_L43 ) / (2 * MATH_L43 );
286- g_sqrt_z_y = sqrt (g_z_in*g_z_in + g_y_in*g_y_in);
283+ double x_in = 0.0 ;
284+ double y_in = 0.0 ;
285+ double z_in = 0.0 ;
286+ double right_all = 0.0 ;
287+ double right_all_2 = 0.0 ;
288+ double sqrt_z_x = 0.0 ;
289+ double sqrt_z_y = 0.0 ;
290+ double phi = 0.0 ;
291+
292+ y_in = (-y-MATH_L2 )/MATH_L3 ;
293+ z_in = (z - MATH_L1 ) / MATH_L3 ;
294+ right_all = (1 - y_in*y_in - z_in*z_in - MATH_L43 *MATH_L43 ) / (2 * MATH_L43 );
295+ sqrt_z_y = sqrt (z_in*z_in + y_in*y_in);
287296
288297
289298 if (x == 0 )
@@ -292,17 +301,17 @@ void uArmClass::calAngles(double x, double y, double z)
292301 g_theta_1 = 90 ;
293302
294303 // Calculate value of theta 3
295- if (g_z_in == 0 ) {
296- g_phi = 90 ;
304+ if (z_in == 0 ) {
305+ phi = 90 ;
297306 }
298307
299308 else {
300- g_phi = atan (-g_y_in / g_z_in )*MATH_TRANS ;
309+ phi = atan (-y_in / z_in )*MATH_TRANS ;
301310 }
302311
303- if (g_phi > 0 ) g_phi = g_phi - 180 ;
312+ if (phi > 0 ) phi = phi - 180 ;
304313
305- g_theta_3 = asin (g_right_all / g_sqrt_z_y )*MATH_TRANS - g_phi ;
314+ g_theta_3 = asin (right_all / sqrt_z_y )*MATH_TRANS - phi ;
306315 if (g_theta_3<0 )
307316 {
308317 g_theta_3 = 0 ;
@@ -332,19 +341,19 @@ void uArmClass::calAngles(double x, double y, double z)
332341
333342 // Calculate value of theta 3
334343
335- g_x_in = (-x / cos (g_theta_1 / MATH_TRANS ) - MATH_L2 ) / MATH_L3 ;
344+ x_in = (-x / cos (g_theta_1 / MATH_TRANS ) - MATH_L2 ) / MATH_L3 ;
336345
337- if (g_z_in == 0 ){ g_phi = 90 ; }
346+ if (z_in == 0 ){ phi = 90 ; }
338347
339- else { g_phi = atan (-g_x_in / g_z_in )*MATH_TRANS ; }
348+ else { phi = atan (-x_in / z_in )*MATH_TRANS ; }
340349
341- if (g_phi > 0 ) {g_phi = g_phi - 180 ;}
350+ if (phi > 0 ) {phi = phi - 180 ;}
342351
343- g_sqrt_z_x = sqrt (g_z_in*g_z_in + g_x_in*g_x_in );
352+ sqrt_z_x = sqrt (z_in*z_in + x_in*x_in );
344353
345- g_right_all_2 = -1 * (g_z_in*g_z_in + g_x_in*g_x_in + MATH_L43 *MATH_L43 - 1 ) / (2 * MATH_L43 );
346- g_theta_3 = asin (g_right_all_2 / g_sqrt_z_x )*MATH_TRANS ;
347- g_theta_3 = g_theta_3 - g_phi ;
354+ right_all_2 = -1 * (z_in*z_in + x_in*x_in + MATH_L43 *MATH_L43 - 1 ) / (2 * MATH_L43 );
355+ g_theta_3 = asin (right_all_2 / sqrt_z_x )*MATH_TRANS ;
356+ g_theta_3 = g_theta_3 - phi ;
348357
349358 if (g_theta_3 <0 ) {
350359 g_theta_3 = 0 ;
@@ -353,7 +362,7 @@ void uArmClass::calAngles(double x, double y, double z)
353362
354363 // Calculate value of theta 2
355364
356- g_theta_2 = asin (g_z_in + MATH_L43 *sin (abs (g_theta_3 / MATH_TRANS )))*MATH_TRANS ;
365+ g_theta_2 = asin (z_in + MATH_L43 *sin (abs (g_theta_3 / MATH_TRANS )))*MATH_TRANS ;
357366
358367 }
359368
@@ -409,12 +418,12 @@ void uArmClass::interpolation(double init_val, double final_val)
409418void uArmClass::calXYZ (double theta_1, double theta_2, double theta_3)
410419{
411420
412- g_l3_1 = MATH_L3 * cos (theta_2 / MATH_TRANS );
413- g_l4_1 = MATH_L4 *cos (theta_3 / MATH_TRANS );
414- g_l5 = (MATH_L2 + MATH_L3 *cos (theta_2 / MATH_TRANS ) + MATH_L4 *cos (theta_3 / MATH_TRANS ));
421+ // g_l3_1 = MATH_L3 * cos(theta_2 / MATH_TRANS);
422+ // g_l4_1 = MATH_L4*cos(theta_3 / MATH_TRANS);
423+ double l5 = (MATH_L2 + MATH_L3 *cos (theta_2 / MATH_TRANS ) + MATH_L4 *cos (theta_3 / MATH_TRANS ));
415424
416- g_cal_x = -cos (abs (theta_1 / MATH_TRANS ))*g_l5 ;
417- g_cal_y = -sin (abs (theta_1 / MATH_TRANS ))*g_l5 ;
425+ g_cal_x = -cos (abs (theta_1 / MATH_TRANS ))*l5 ;
426+ g_cal_y = -sin (abs (theta_1 / MATH_TRANS ))*l5 ;
418427 g_cal_z = MATH_L1 + MATH_L3 *sin (abs (theta_2 / MATH_TRANS )) - MATH_L4 *sin (abs (theta_3 / MATH_TRANS ));
419428
420429}
@@ -486,9 +495,9 @@ void uArmClass::moveTo(double x, double y, double z, int relative, double time_s
486495 double z_arr[50 ];
487496
488497 calXYZ ();
489- g_current_x = g_cal_x;
490- g_current_y = g_cal_y;
491- g_current_z = g_cal_z;
498+ double current_x = g_cal_x;
499+ double current_y = g_cal_y;
500+ double current_z = g_cal_z;
492501
493502 if ((relative !=0 )&&(relative != 1 ))
494503 {
@@ -502,23 +511,23 @@ void uArmClass::moveTo(double x, double y, double z, int relative, double time_s
502511
503512 // }
504513
505- interpolation (g_current_x, g_current_x *relative+x);
514+ interpolation (current_x, current_x *relative+x);
506515
507516 for (byte i = 0 ; i < 50 ; i++){
508517
509518 x_arr[i] = g_interpol_val_arr[i];
510519
511520 }
512521
513- interpolation (g_current_y, g_current_y *relative+y);
522+ interpolation (current_y, current_y *relative+y);
514523
515524 for (byte i = 0 ; i < 50 ; i++){
516525
517526 y_arr[i] = g_interpol_val_arr[i];
518527
519528 }
520529
521- interpolation (g_current_z, g_current_z *relative+z);
530+ interpolation (current_z, current_z *relative+z);
522531
523532 for (byte i = 0 ; i < 50 ; i++){
524533
@@ -549,16 +558,16 @@ void uArmClass::moveToAtOnce(double x, double y, double z, int relative, double
549558
550559
551560 calXYZ ();
552- g_current_x = g_cal_x;
553- g_current_y = g_cal_y;
554- g_current_z = g_cal_z;
561+ double current_x = g_cal_x;
562+ double current_y = g_cal_y;
563+ double current_z = g_cal_z;
555564
556565 if ((relative !=0 )&&(relative != 1 ))
557566 {
558567 relative = 0 ;
559568 }
560569
561- calAngles (g_current_x *relative+x,g_current_y *relative+y,g_current_z *relative+z);
570+ calAngles (current_x *relative+x,current_y *relative+y,current_z *relative+z);
562571 l_movementTrigger = 1 ;
563572 uarm.writeAngle (g_theta_1, g_theta_2, g_theta_3, servo_4_angle);
564573
@@ -575,9 +584,9 @@ void uArmClass::moveTo(double x, double y, double z, int relative, double time_s
575584
576585
577586 calXYZ ();
578- g_current_x = g_cal_x;
579- g_current_y = g_cal_y;
580- g_current_z = g_cal_z;
587+ double current_x = g_cal_x;
588+ double current_y = g_cal_y;
589+ double current_z = g_cal_z;
581590
582591 if ((relative !=0 )&&(relative != 1 ))
583592 {
@@ -594,26 +603,26 @@ void uArmClass::moveTo(double x, double y, double z, int relative, double time_s
594603 time_spend = abs (time_spend);
595604 }
596605
597- interpolation (g_current_x, g_current_x *relative+x);
606+ interpolation (current_x, current_x *relative+x);
598607
599608 for (byte i = 0 ; i < 50 ; i++){
600609
601610 x_arr[i] = g_interpol_val_arr[i];
602611
603612 }
604613
605- interpolation (g_current_y, g_current_y *relative+y);
614+ interpolation (current_y, current_y *relative+y);
606615
607616 for (byte i = 0 ; i < 50 ; i++){
608617
609618 y_arr[i] = g_interpol_val_arr[i];
610619
611620 }
612621
613- if ( g_current_z *relative+z>25 )
614- { interpolation (g_current_z , 25 ); }
622+ if ( current_z *relative+z>25 )
623+ { interpolation (current_z , 25 ); }
615624 else
616- { interpolation (g_current_z, g_current_z *relative+z); }
625+ { interpolation (current_z, current_z *relative+z); }
617626
618627 for (byte i = 0 ; i < 50 ; i++){
619628
@@ -651,9 +660,9 @@ void uArmClass::drawCur(double length_1, double length_2, int angle, double time
651660 double l_yp;
652661
653662 calXYZ ();
654- g_current_x = g_cal_x;
655- g_current_y = g_cal_y;
656- g_current_z = g_cal_z;
663+ double current_x = g_cal_x;
664+ double current_y = g_cal_y;
665+ double current_z = g_cal_z;
657666
658667 interpolation (0 , angle/MATH_TRANS );
659668
@@ -663,7 +672,7 @@ void uArmClass::drawCur(double length_1, double length_2, int angle, double time
663672 l_xp = length_1 * cos (g_interpol_val_arr[i]);
664673 l_yp = length_2 * sin (g_interpol_val_arr[i]);
665674
666- calAngles ( l_xp + g_current_x - length_1 , l_yp+ g_current_y , g_current_z );
675+ calAngles ( l_xp + current_x - length_1 , l_yp+ current_y , current_z );
667676 l_movementTrigger = 1 ;
668677 uarm.writeAngle (g_theta_1, g_theta_2, g_theta_3,0 );
669678
@@ -677,11 +686,11 @@ double uArmClass::calYonly(double theta_1, double theta_2, double theta_3)
677686
678687{
679688
680- g_l3_1_2 = MATH_L3 * cos (theta_2 / MATH_TRANS );
681- g_l4_1_2 = MATH_L4 *cos (theta_3 / MATH_TRANS );
682- g_l5_2 = (MATH_L2 + MATH_L3 *cos (theta_2 / MATH_TRANS ) + MATH_L4 *cos (theta_3 / MATH_TRANS ));
689+ // g_l3_1_2 = MATH_L3 * cos(theta_2 / MATH_TRANS);
690+ // g_l4_1_2 = MATH_L4*cos(theta_3 / MATH_TRANS);
691+ double l5_2 = (MATH_L2 + MATH_L3 *cos (theta_2 / MATH_TRANS ) + MATH_L4 *cos (theta_3 / MATH_TRANS ));
683692
684- return -sin (abs (theta_1 / MATH_TRANS ))*g_l5_2 ;
693+ return -sin (abs (theta_1 / MATH_TRANS ))*l5_2 ;
685694
686695}
687696
0 commit comments