Skip to content

Commit bc11e23

Browse files
authored
Merge pull request #7 from starf555/RT-Version-Test
use signed int for the config value of servo
2 parents 3225daa + 45e0569 commit bc11e23

File tree

3 files changed

+13
-8
lines changed

3 files changed

+13
-8
lines changed

src/Stackchan_servo.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ void StackchanSERVO::attachServos() {
7272
_dxl.writeControlTableItem(DRIVE_MODE, AXIS_X + 1, 4); // Velocityのパラメータを移動時間(msec)で指定するモードに変更
7373
_dxl.writeControlTableItem(DRIVE_MODE, AXIS_Y + 1, 4); // Velocityのパラメータを移動時間(msec)で指定するモードに変更
7474
_dxl.torqueOn(AXIS_X + 1);
75-
delay(10); // ここでWaitを入れないと、Y(tilt)サーボが動かない場合がある。
75+
delay(100); // ここでWaitを入れないと、Y(tilt)サーボが動かない場合がある。
7676
_dxl.torqueOn(AXIS_Y + 1);
7777
delay(100);
7878
_dxl.writeControlTableItem(PROFILE_VELOCITY, AXIS_X + 1, 1000);
@@ -103,13 +103,18 @@ void StackchanSERVO::attachServos() {
103103
_dxl.writeControlTableItem(PROFILE_VELOCITY, AXIS_Y + 1, 1000);
104104
delay(100);
105105

106+
M5_LOGI("CurrentPosition X:%f, Y:%f", _dxl.getPresentPosition(AXIS_X + 1), _dxl.getPresentPosition(AXIS_Y + 1));
107+
106108
if (_dxl.getPresentPosition(AXIS_X + 1) > 4096) {
107109
_init_param.servo[AXIS_X].offset = _init_param.servo[AXIS_X].offset + 360;
108110
}
109-
if (_dxl.getPresentPosition(AXIS_Y + 1) > 4096) {
111+
if ((_dxl.getPresentPosition(AXIS_Y + 1)-convertDYNIXELXL330_RT(_init_param.servo[AXIS_Y].lower_limit + _init_param.servo[AXIS_Y].offset)) > convertDYNIXELXL330_RT(270)) {
110112
_init_param.servo[AXIS_Y].offset = _init_param.servo[AXIS_Y].offset + 360;
111113
}
114+
//_init_param.servo[AXIS_Y].offset = 360;
112115

116+
M5_LOGI("Current Offset X:%d, Y:%d", _init_param.servo[AXIS_X].offset, _init_param.servo[AXIS_Y].offset);
117+
113118
_dxl.setGoalPosition(AXIS_X + 1, convertDYNIXELXL330_RT(_init_param.servo[AXIS_X].start_degree + _init_param.servo[AXIS_X].offset));
114119
_dxl.setGoalPosition(AXIS_Y + 1, convertDYNIXELXL330_RT(_init_param.servo[AXIS_Y].start_degree + _init_param.servo[AXIS_Y].offset));
115120
//_dxl.torqueOff(AXIS_X + 1);

src/Stackchan_servo.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ typedef struct ServoParam {
4444
int16_t offset; // オフセット(90°からの+-)
4545
int16_t degree; // 角度
4646
uint32_t millis_for_move; // 移動時間(msec)
47-
uint16_t lower_limit; // サーボ角度の下限
48-
uint16_t upper_limit; // サーボ角度の上限
47+
int16_t lower_limit; // サーボ角度の下限
48+
int16_t upper_limit; // サーボ角度の上限
4949
} servo_param_s;
5050

5151

src/Stackchan_system_config.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ typedef struct SecretItems {
4141

4242
typedef struct ServoInitialParam {
4343
uint8_t pin;
44-
uint16_t offset;
45-
uint16_t upper_limit;
46-
uint16_t lower_limit;
47-
uint16_t start_degree;
44+
int16_t offset;
45+
int16_t upper_limit;
46+
int16_t lower_limit;
47+
int16_t start_degree;
4848
} servo_initial_param_s;
4949

5050
enum AvatarMode {

0 commit comments

Comments
 (0)