Can't even recover servos

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);
}

Our Arduino DYNAMIXEL Shields are not compatible with DYNAMIXEL Wizard. The DYNAMIXEL Wizard configuration software is compatible with:

  • Our U2D2 serial converter, or any other comparable half-duplex serial converter
  • The OpenRB Arduino based microcontroller
  • The OpenCM Arduino based microcontroller

You can identify the current settings of your DYNAMIXELs using our scan example sketch.
You can then adjust your DYNAMIXEL’s IDs with your current DYNAMIXEL Shield by modifying this example sketch, but this process must be performed one at a time.