diff --git a/library.properties b/library.properties index 533833e..9ab44cb 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=Dynamixel2Arduino -version=0.8.1 +version=0.8.2 author=ROBOTIS license=Apache-2.0 maintainer=Sookyung Son(sukaa@robotis.com) diff --git a/src/Dynamixel2Arduino.cpp b/src/Dynamixel2Arduino.cpp index 6222112..78558b8 100644 --- a/src/Dynamixel2Arduino.cpp +++ b/src/Dynamixel2Arduino.cpp @@ -37,6 +37,7 @@ const uint16_t model_number_table[] PROGMEM = { XC330_M288, XC330_T181, XC330_T288, + XM335_T323, XL430_W250, XXL430_W250, XC430_W150, XC430_W240, @@ -308,6 +309,7 @@ bool Dynamixel2Arduino::setBaudrate(uint8_t id, uint32_t baudrate) return false; } break; + case XM335_T323: case XC330_M288: case XC330_M181: case XC330_T288: @@ -727,7 +729,8 @@ bool Dynamixel2Arduino::setOperatingMode(uint8_t id, uint8_t mode) case XC330_M288: case XC330_M181: case XC330_T181: - case XC330_T288: + case XC330_T288: + case XM335_T323: case XM430_W210: case XM430_W350: case XH430_V210: @@ -1190,6 +1193,7 @@ const ModelDependencyFuncItemAndRangeInfo_t dependency_ctable_2_0_common[] PROGM || ENABLE_ACTUATOR_MX106_PROTOCOL2 \ || ENABLE_ACTUATOR_XL330 \ || ENABLE_ACTUATOR_XC330 \ + || ENABLE_ACTUATOR_XM335 \ || ENABLE_ACTUATOR_XC430 \ || ENABLE_ACTUATOR_XL430 \ || ENABLE_ACTUATOR_XM430 || ENABLE_ACTUATOR_XH430 || ENABLE_ACTUATOR_XD430 \ @@ -1267,6 +1271,17 @@ const ModelDependencyFuncItemAndRangeInfo_t dependency_xc330_t181_t288[] PROGMEM {LAST_DUMMY_FUNC, ControlTableItem::LAST_DUMMY_ITEM, UNIT_RAW, 0, 0, 0} }; +const ModelDependencyFuncItemAndRangeInfo_t dependency_xm335_t323[] PROGMEM = { + #if (ENABLE_ACTUATOR_XM335) + {SET_CURRENT, GOAL_CURRENT, UNIT_MILLI_AMPERE, -910, 910, 1}, + {GET_CURRENT, PRESENT_CURRENT, UNIT_MILLI_AMPERE, -910, 910, 1}, + + {SET_VELOCITY, GOAL_VELOCITY, UNIT_RPM, -2047, 2047, 0.229}, + {GET_VELOCITY, PRESENT_VELOCITY, UNIT_RPM, -2047, 2047, 0.229}, + #endif + {LAST_DUMMY_FUNC, ControlTableItem::LAST_DUMMY_ITEM, UNIT_RAW, 0, 0, 0} + }; + const ModelDependencyFuncItemAndRangeInfo_t dependency_xm430_w210_w350[] PROGMEM = { #if (ENABLE_ACTUATOR_XM430) {SET_CURRENT, GOAL_CURRENT, UNIT_MILLI_AMPERE, -1193, 1193, 2.69}, @@ -1692,6 +1707,11 @@ static ItemAndRangeInfo_t getModelDependencyFuncInfo(uint16_t model_num, uint8_t p_dep_ctable = dependency_xc330_t181_t288; break; + case XM335_T323: + p_common_ctable = dependency_ctable_2_0_common; + p_dep_ctable = dependency_xm335_t323; + break; + case XM430_W210: case XM430_W350: p_common_ctable = dependency_ctable_2_0_common; diff --git a/src/actuator.cpp b/src/actuator.cpp index a37bca0..5f63c83 100644 --- a/src/actuator.cpp +++ b/src/actuator.cpp @@ -170,6 +170,7 @@ const ModelControlTableInfo_t control_table_2_0[] PROGMEM = { || ENABLE_ACTUATOR_MX106_PROTOCOL2 \ || ENABLE_ACTUATOR_XL330 \ || ENABLE_ACTUATOR_XC330 \ + || ENABLE_ACTUATOR_XM335 \ || ENABLE_ACTUATOR_XL430 \ || ENABLE_ACTUATOR_XC430 \ || ENABLE_ACTUATOR_XM430 || ENABLE_ACTUATOR_XH430 || ENABLE_ACTUATOR_XD430 \ @@ -258,6 +259,7 @@ const ModelControlTableInfo_t xc430_xl430_control_table[] PROGMEM = { const ModelControlTableInfo_t xmh430_xl330_control_table[] PROGMEM = { #if (ENABLE_ACTUATOR_XL330 \ || ENABLE_ACTUATOR_XC330 \ + || ENABLE_ACTUATOR_XM335 \ || ENABLE_ACTUATOR_XM430 \ || ENABLE_ACTUATOR_XH430) {ControlTableItem::CURRENT_LIMIT, 38, 2}, @@ -570,7 +572,8 @@ ControlTableItemInfo_t DYNAMIXEL::getControlTableItemInfo(uint16_t model_num, ui case XC330_M181: case XC330_M288: case XC330_T181: - case XC330_T288: + case XC330_T288: + case XM335_T323: case XM430_W210: case XM430_W350: case XH430_V210: diff --git a/src/actuator.h b/src/actuator.h index be37d48..cf7b54f 100644 --- a/src/actuator.h +++ b/src/actuator.h @@ -93,6 +93,10 @@ #define XC330_T288 (uint16_t)1220 #endif +#ifndef XM335_T323 +#define XM335_T323 (uint16_t)1710 +#endif + #ifndef XC430_W150 #define XC430_W150 (uint16_t)1070 #endif diff --git a/src/utility/config.h b/src/utility/config.h index eac11b0..41d0e4b 100644 --- a/src/utility/config.h +++ b/src/utility/config.h @@ -18,6 +18,7 @@ #define ENABLE_ACTUATOR_XL320 1 #define ENABLE_ACTUATOR_XL330 1 #define ENABLE_ACTUATOR_XC330 1 +#define ENABLE_ACTUATOR_XM335 1 #define ENABLE_ACTUATOR_XL430 1 // includes 2XL430 #define ENABLE_ACTUATOR_XC430 1 // includes 2XC430 #define ENABLE_ACTUATOR_XM430 1