DYNAMIXEL Actuator
XC430-W240-T
Issue Description
I have three of these servos, attached to an arduino uno which is plugged into a port splitter on my laptop. the uno has the right shield on it, but the wizard won’t even recover the damn things, not one of them. The big issue i’m having is that I cannot control each one individually. I’m using the arduino IDE and copying directly from the example. Then they all do ONLY what the first one does, which is annoying. I can’t seem to separate the three no matter what I try. I have each ID set separately and made sure they’re not overlapped in my code but I can’t check the ID’s on the wizard because it just can’t find them. Help!
Additional Information/Attachments
this is my code if anyone is wondering:
#include <DynamixelShield.h>
#if defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_MEGA2560)
#include <SoftwareSerial.h>
SoftwareSerial soft_serial(7, 8); // DYNAMIXELShield UART RX/TX
#define DEBUG_SERIAL soft_serial
#elif defined(ARDUINO_SAM_DUE) || defined(ARDUINO_SAM_ZERO)
#define DEBUG_SERIAL SerialUSB
#else
#define DEBUG_SERIAL Serial
#endif
const uint8_t DXL_ID1 = 1;
const uint8_t DXL_ID2 = 2;
const uint8_t DXL_ID3 = 3;
const float DXL_PROTOCOL_VERSION = 2.0;
DynamixelShield dxl;
DynamixelShield dx2;
DynamixelShield dx3;
using namespace ControlTableItem;
void setup() {
DEBUG_SERIAL.begin(115200);
dxl.begin(57600);
dx2.begin(57600);
dx3.begin(57600);
dxl.setPortProtocolVersion(DXL_PROTOCOL_VERSION);
dx2.setPortProtocolVersion(DXL_PROTOCOL_VERSION);
dx3.setPortProtocolVersion(DXL_PROTOCOL_VERSION);
// Get DYNAMIXEL information
dxl.ping(DXL_ID1);
dx2.ping(DXL_ID2);
dx3.ping(DXL_ID3);
dxl.torqueOff(DXL_ID1);
dxl.setOperatingMode(DXL_ID1, OP_POSITION);
dxl.torqueOn(DXL_ID1);
dx2.torqueOff(DXL_ID2);
dx2.setOperatingMode(DXL_ID2, OP_POSITION);
dx2.torqueOn(DXL_ID2);
dx3.torqueOff(DXL_ID3);
dx3.setOperatingMode(DXL_ID3, OP_POSITION);
dx3.torqueOn(DXL_ID3);
delay(1000);
}
void loop() {
dxl.ledOn(DXL_ID1);
dxl.setGoalPosition(DXL_ID1, 90, UNIT_DEGREE);
delay(200);
dxl.setGoalPosition(DXL_ID1, 360, UNIT_DEGREE);
dxl.ledOff(DXL_ID1);
delay(500);
dx2.ledOn(DXL_ID2);
dx2.setGoalPosition(DXL_ID2, 90, UNIT_DEGREE);
dx2.ledOff(DXL_ID2);
delay(500);
}