Script Collection icon Script Collection — Manage and execute multiple scripts in a single Script Manager using ControlCommand(), with Control Details showing available commands. Try it →
Asked
Multi-Board Servo Controller Support

Multi-Board Servo Controller Support

Hey - I'm using the Custom servo Controller robot skill in an ARC project.

I'm trying to use two Arduino Mega 2560 boards to control a total of 53 servos. The Custom servo Controller skill works well for the first board connected to one COM port, but I discovered I can't run two instances of the skill in the same project to control the second board on a separate COM port.

Would it be possible to update the skill to allow multiple instances in one project? For example, each open Custom servo Controller skill instance could be assigned a board number and a range of virtual servo ports (e.g., board 1 = virtual ports 1-38, board 2 = virtual ports 1-15), each tied to its own COM port.

Any help or feedback would be greatly appreciated - thanks!



Related Hardware (view all EZB hardware)
Arduino Mega with Synthiam ARCx controls 24 servos, 13 PWM, sensors and serial modules via EZB firmware over USB.
USB
Servos 24
Camera
Audio
UART 3
I2C
ADC 8
Digital 21

Related Robot Skill (view all robot skills)
Control up to 99 servos over serial with Vx virtual ports using custom firmware on Arduino or microcontroller controllers.

ARC Pro

Upgrade to ARC Pro

Don't limit your robot's potential – subscribe to ARC Pro and transform it into a dynamic, intelligent machine.

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#1  

Yes - this is a very reasonable use case, and ARC can support multiple hardware controllers in a project, but the Custom servo Controller skill would need to be designed for multi-instance use first.

What’s happening now

The current skill is built to connect one controller per instance and map selected Vx virtual servo ports to that single serial device. That means:

  • One skill instance = one COM port
  • The skill likely acts as a singleton or uses shared resources internally
  • So adding a second copy in the same project may conflict, even if the second board is on a different COM port

Your proposed design

What you described is a solid architecture:

  • Instance 1
    • COM port A
    • board index 1
    • virtual ports V0-V37
  • Instance 2
    • COM port B
    • board index 2
    • virtual ports V0-V14

That would let ARC send servo commands to different boards independently. The key requirement is that the robot skill must namespace its port mapping and connection state per instance so the two copies don’t overwrite each other.

Best path forward

If this functionality isn’t already in the skill, the way to add it is to build or update the robot skill as a multi-instance plugin.

Here’s the overview for creating a robot skill:

And if you want a model for how ARC handles custom hardware skills, this existing skill is the one you’re using:

Important note for servos

ARC’s servo ports are already constants, so if you’re using multiple boards, the skill should map each controller to its own selected set of Vx ports rather than trying to reuse the same virtual port range for both boards.

Recommendation

If you’re developing this yourself, I’d suggest:

  1. Make the skill support multiple instances
  2. Add a config option for:
    • COM port
    • baud rate
    • board ID / label
    • selected virtual servo ports
  3. Keep each instance’s serial connection and servo mapping isolated
  4. Confirm each board responds only to its assigned port range

If you’re trying to work around this today

A possible workaround is to:

  • Use one skill instance per board
  • Ensure the second instance uses a completely separate port mapping
  • If the current skill blocks that, it confirms the plugin needs an update for multi-instance support

If you want, I can help with either of these next steps:

  • outline how the plugin should be structured for multiple instances
  • help draft the JavaScript/Python side of a test script for verifying both boards
  • explain how to modify the skill so each board gets its own COM connection and servo range

If this is for development, the ARC AI Assistant inside ARC can also help rewrite plugin logic and scripts quickly:

If you’d like, I can sketch a simple multi-board mapping design for the skill.

I am a customer support AI and still learning. Please verify important answers in our support documentation. For advanced AI features, use the AI Script Agent built into ARC.
#2  

Can you provide me with the source code for the original Custom servo Controller skill and suggest what to modify in order for the skill to function as I suggested?

Author Avatar
PRO
Synthiam
LinkedIn Thingiverse Twitter YouTube GitHub
#3  

I’ll have the GitHub updated if it’s not listed in the manual. But either way that should be a quick and easy fix. I can even do it when I get home for ya.

#5  

DJ thanks for the help really appreciate it:) Just got a chance to test the updated Custom servo Controller seems to work great as far as board selection. However seems you still can't open two instances of the skill in a project yet, only one board can be used at a time still.