아래와 같은 코드로
OPENCM 9.04 와 EXP485,
모터는
ID1 : XM430-W350
ID2 : XM430-W210
ID3 : XM430-W350
을 사용하여 토크가 꺼진 모터들을 손으로 움직이며 해당 위치 값을 SYNC_READ를 통해 받고 싶습니다.
예제 코드를 참고하여 아래와 같은 코드를 작성하였는데 ID3의 위치는 받아오지 않습니다.
방법이 무엇일까요??
또, ID1을 제외하고 2,3번에 관한 것만 받아오도록 하면 받아와집니다. 혹시, SYNC_READ는 2개의 모터만 받아올 수 있는 건가요???
코드 전문
#include <DynamixelWorkbench.h>
#define DEVICE_NAME “3” //Dynamixel on Serial3(USART3) <-OpenCM 485EXP
#define BAUDRATE 1000000
#define DXL_ID_1 1
#define DXL_ID_2 2
#define DXL_ID_3 3
DynamixelWorkbench dxl_wb;
uint8_t dxl_id[3] = {DXL_ID_1, DXL_ID_2, DXL_ID_3};
const uint8_t handler_index = 0;
void setup()
{
Serial.begin(57600);
Serial2.begin(57600);
const char *log;
uint16_t model_number = 0;
dxl_wb.init(DEVICE_NAME, BAUDRATE, &log);
for (int cnt = 0; cnt < 3; cnt++)
{
dxl_wb.ping(dxl_id[cnt], &model_number, &log);
}
dxl_wb.addSyncReadHandler(dxl_id[0], “Present_Position”, &log);
}
void loop()
{
const char *log;
int32_t present_position[3] = {0, 0, 0};
dxl_wb.syncRead(handler_index, &log);
dxl_wb.getSyncReadData(handler_index, &present_position[0], &log);
Serial.print(" Present Position : “);
Serial.print(present_position[0]);
Serial.print(”,“);
Serial.print(present_position[1]);
Serial.print(”,");
Serial.println(present_position[2]);
}