@@ -55,35 +55,32 @@ void uArmClass::writeAngle(byte servo_rot_angle, byte servo_left_angle, byte ser
5555
5656}
5757
58- void uArmClass::writeAngle (byte servo_rot_angle, byte servo_left_angle, byte servo_right_angle, byte servo_hand_rot_angle)
58+ void uArmClass::writeAngle (double servo_rot_angle, double servo_left_angle, double servo_right_angle, double servo_hand_rot_angle)
5959{
6060 if (l_movementTrigger==0 )
6161 {
6262 attachAll ();
6363 }
64-
65- int servo_1_angle_execute = inputToReal (SERVO_ROT_NUM ,round (servo_rot_angle));
66- int servo_2_angle_execute = inputToReal (SERVO_LEFT_NUM ,round (servo_left_angle));
67- int servo_3_angle_execute = inputToReal (SERVO_RIGHT_NUM ,round (servo_right_angle));
68- int servo_4_angle_execute = inputToReal (SERVO_HAND_ROT_NUM ,round (servo_hand_rot_angle));
6964
70- if (servo_2_angle_execute < 10 ) servo_2_angle_execute = 10 ;
71- if (servo_2_angle_execute > 120 ) servo_2_angle_execute = 120 ;
72- if (servo_3_angle_execute < 10 ) servo_3_angle_execute = 10 ;
73- if (servo_3_angle_execute > 110 ) servo_3_angle_execute = 110 ;
74-
75-
76- if (servo_2_angle_execute + servo_3_angle_execute > 150 )
77- {servo_3_angle_execute = 150 - servo_2_angle_execute;}
65+ if (servo_left_angle < 10 ) servo_left_angle = 10 ;
66+ if (servo_left_angle > 120 ) servo_left_angle = 120 ;
67+ if (servo_right_angle < 10 ) servo_right_angle = 10 ;
68+ if (servo_right_angle > 110 ) servo_right_angle = 110 ;
69+
70+ if (servo_left_angle + servo_right_angle > 150 )
71+ {servo_right_angle = 150 - servo_left_angle;}
72+
73+ int servo_rot_angle_execute = inputToReal (SERVO_ROT_NUM ,servo_rot_angle);
74+ int servo_left_angle_execute = inputToReal (SERVO_LEFT_NUM ,servo_left_angle);
75+ int servo_right_angle_execute = inputToReal (SERVO_RIGHT_NUM ,servo_right_angle);
76+ int servo_hand_rot_angle_execute = inputToReal (SERVO_HAND_ROT_NUM ,servo_hand_rot_angle);
7877
79- g_servo_rot.write (servo_1_angle_execute);
80- g_servo_left.write (servo_2_angle_execute);
81- g_servo_right.write (servo_3_angle_execute);
82- g_servo_hand_rot.write (servo_4_angle_execute);
83- l_movementTrigger = 0 ;
84-
85-
78+ g_servo_rot.write (servo_rot_angle_execute);
79+ g_servo_left.write (servo_left_angle_execute);
80+ g_servo_right.write (servo_right_angle_execute);
81+ g_servo_hand_rot.write (servo_hand_rot_angle_execute);
8682
83+ l_movementTrigger = 0 ;
8784
8885}
8986
@@ -108,9 +105,9 @@ void uArmClass::detachAll()
108105}
109106
110107
111- byte uArmClass::inputToReal (byte servo_num, byte input_angle)
108+ byte uArmClass::inputToReal (byte servo_num, double input_angle)
112109{
113- return (byte)constrain ((input_angle + readServoOffset (servo_num)),0 ,180 );
110+ return (byte)round ( constrain ((input_angle + readServoOffset (servo_num)),0 ,180 ) );
114111}
115112
116113double uArmClass::readServoOffset (byte servo_num)
0 commit comments