Skip to content

Commit 839a2ad

Browse files
committed
Merge pull request #7 from dcorboy/master
Move constraints into logical domain and refactor integer conversion to improve accuracy.
2 parents 340d40f + d306d19 commit 839a2ad

2 files changed

Lines changed: 22 additions & 25 deletions

File tree

uarm_library.cpp

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -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

116113
double uArmClass::readServoOffset(byte servo_num)

uarm_library.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ class uArmClass
6969
void saveDataToRom(double data, int addr);
7070
void attachAll();
7171
void detachAll();
72-
void writeAngle(byte servo_rot_angle, byte servo_left_angle, byte servo_right_angle, byte servo_hand_rot_angle);
73-
byte inputToReal(byte servo_num , byte input_angle);
72+
void writeAngle(double servo_rot_angle, double servo_left_angle, double servo_right_angle, double servo_hand_rot_angle);
73+
byte inputToReal(byte servo_num , double input_angle);
7474
double readAngle(byte servo_num);
7575
double readToAngle(double input_angle, byte servo_num, byte trigger);
7676
void writeAngle(byte servo_rot_angle, byte servo_left_angle, byte servo_right_angle, byte servo_hand_rot_angle, byte trigger);

0 commit comments

Comments
 (0)