Skip to content

Commit b70ace2

Browse files
committed
v1.5.8 use writeAngle() in moveToOps()
1 parent 5825d39 commit b70ace2

4 files changed

Lines changed: 46 additions & 21 deletions

File tree

HISTORY.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
## [1.5.7] - 2016-05-07
1+
## [1.5.8] - 2016-05-07
22

33
### Fix
4-
5-
- Update SERVO_OFFST_ADDRESS to MANUAL_OFFSET_ADDRESS
6-
- Update indent for syntax
4+
- Speed up Calibration, reduce delay
5+
- Use writeAngle() Function in MoveTo
76

87
### Changes
98

examples/Calibration/Calibration.ino

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,18 +143,18 @@ void linear_calibration_servo(byte servo_num)
143143
}
144144

145145
if(i == 0) {
146-
delay(2000);
146+
delay(1000);
147147
}
148148

149149
for (int l = 0; l<3; l++) {
150150
l_angle_analog = analogRead(l_analog_pin);
151-
delay(100);
151+
delay(50);
152152
}
153153

154154
arr_real[i] = kServoRangeIni + dot_i;
155155
arr_input[i] = l_angle_analog;
156156

157-
delay(800);
157+
delay(100);
158158

159159
}
160160
arr_real[0] = kServoRangeIni;

uarm_library.cpp

Lines changed: 38 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,32 @@ void uArmClass::alert(byte times, byte runTime, byte stopTime)
5454
}
5555
}
5656

57+
void uArmClass::writeAngle(double servo_rot_angle, double servo_left_angle, double servo_right_angle, double servo_hand_rot_angle)
58+
{
59+
attachAll();
60+
61+
if(servo_left_angle < 10) servo_left_angle = 10;
62+
if(servo_left_angle > 120) servo_left_angle = 120;
63+
if(servo_right_angle < 10) servo_right_angle = 10;
64+
if(servo_right_angle > 110) servo_right_angle = 110;
65+
66+
if(servo_left_angle + servo_right_angle > 160)
67+
{
68+
servo_right_angle = 160 - servo_left_angle;
69+
return;
70+
}
71+
writeServoAngle(SERVO_ROT_NUM,servo_rot_angle,true);
72+
writeServoAngle(SERVO_LEFT_NUM,servo_left_angle,true);
73+
writeServoAngle(SERVO_RIGHT_NUM,servo_right_angle,true);
74+
writeServoAngle(SERVO_HAND_ROT_NUM,servo_hand_rot_angle,true);
75+
76+
77+
// refresh logical servo angle cache
78+
cur_rot = servo_rot_angle;
79+
cur_left = servo_left_angle;
80+
cur_right = servo_right_angle;
81+
cur_hand = servo_hand_rot_angle;
82+
}
5783

5884
/* Write the angle to Servo
5985
* servo_number - SERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM
@@ -487,12 +513,12 @@ void uArmClass::calXYZ()
487513
for (byte i = 0; i < INTERP_INTVLS; i++)
488514
{
489515

490-
// writeAngle(rot_array[i], left_array[i], right_array[i], hand_array[i]);
491-
writeServoAngle(SERVO_ROT_NUM, rot_array[i], true);
516+
writeAngle(rot_array[i], left_array[i], right_array[i], hand_array[i]);
517+
//writeServoAngle(SERVO_ROT_NUM, rot_array[i], true);
492518
// writeServoAngle(SERVO_LEFT_NUM, left_array[i],true);
493519
// writeServoAngle(SERVO_RIGHT_NUM, right_array[i],true);
494-
writeLeftRightServoAngle(left_array[i], right_array[i], true);
495-
writeServoAngle(SERVO_HAND_ROT_NUM, hand_array[i],true);
520+
//writeLeftRightServoAngle(left_array[i], right_array[i], true);
521+
//writeServoAngle(SERVO_HAND_ROT_NUM, hand_array[i],true);
496522
delay(time * 1000 / INTERP_INTVLS);
497523
}
498524
} else if (path_type == PATH_LINEAR) {
@@ -516,25 +542,25 @@ void uArmClass::calXYZ()
516542
// Serial.println(left);
517543
// Serial.println(right);
518544
// Serial.println();
519-
writeServoAngle(SERVO_ROT_NUM, rot,true);
545+
//writeServoAngle(SERVO_ROT_NUM, rot,true);
520546
// writeServoAngle(SERVO_LEFT_NUM, tgt_left,true);
521547
// writeServoAngle(SERVO_RIGHT_NUM, tgt_right,true);
522-
writeLeftRightServoAngle(left, right, true);
548+
//writeLeftRightServoAngle(left, right, true);
523549
// if(enable_hand)
524-
writeServoAngle(SERVO_HAND_ROT_NUM, hand_array[i], true);
525-
// writeAngle(rot, left, right, hand_array[i]);
550+
//writeServoAngle(SERVO_HAND_ROT_NUM, hand_array[i], true);
551+
writeAngle(rot, left, right, hand_array[i]);
526552
delay(time * 1000 / INTERP_INTVLS);
527553
}
528554
}
529555
}
530556

531557
// set final target position at end of interpolation or "atOnce"
532-
writeServoAngle(SERVO_ROT_NUM, tgt_rot, true);
558+
//writeServoAngle(SERVO_ROT_NUM, tgt_rot, true);
533559
// writeServoAngle(SERVO_LEFT_NUM, tgt_left, true);
534560
// writeServoAngle(SERVO_RIGHT_NUM, tgt_right, true);
535-
writeLeftRightServoAngle(tgt_left, tgt_right, true);
536-
writeServoAngle(SERVO_HAND_ROT_NUM, hand_angle, true);
537-
// writeAngle(tgt_rot, tgt_left, tgt_right, hand_angle);
561+
//writeLeftRightServoAngle(tgt_left, tgt_right, true);
562+
//writeServoAngle(SERVO_HAND_ROT_NUM, hand_angle, true);
563+
writeAngle(tgt_rot, tgt_left, tgt_right, hand_angle);
538564
}
539565

540566
double uArmClass::calYonly(double theta_1, double theta_2, double theta_3)

uarm_library.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
#define UARM_MAJOR_VERSION 1
2424
#define UARM_MINOR_VERSION 5
25-
#define UARM_BUGFIX 7
25+
#define UARM_BUGFIX 8
2626

2727
#define SERVO_ROT_NUM 0
2828
#define SERVO_LEFT_NUM 1
@@ -155,7 +155,7 @@ class uArmClass
155155
}
156156

157157
void writeStretch(double armStretch, double armHeight);
158-
158+
void writeAngle(double servo_rot_angle, double servo_left_angle, double servo_right_angle, double servo_hand_rot_angle);
159159

160160
double getCalX() {
161161
return g_cal_x;

0 commit comments

Comments
 (0)