Virtual Reality Robot icon Virtual Reality Robot — Stream robot camera to VR and control servos with headset pitch/yaw; supports SteamVR and Cardboard (iOS/Android) for immersive teleoperation Try it →
 
Feetech Rs485 Servo Driver Robot Skill

Feetech Rs485 Servo Driver

by Feetech

Drives Feetech SM, STS, and SCS bus servos from ARCx virtual servo ports via EZB or COM port, with sync writes and telemetry.

Requires ARCx v4 (Updated 9/27/2026)
Tags: Servo
Compatible with: Compatible with Microsoft Windows 10 or 11 Windows Compatible with ARM Linux (Raspberry pi, etc) ARM Compatible with Linux Linux Compatible with MacOS MacOS

How to add the Feetech Rs485 Servo Driver robot skill

  1. Load the most recent release of ARCx on a compatible operating system (Get ARCx).
  2. Press the + Skills menu from the top menu bar in ARCx.
  3. Choose the Servo category tab.
  4. Press the Feetech Rs485 Servo Driver icon to add the robot skill to your project.

Don't have a robot yet?

Follow the Getting Started Guide to build a robot and use the Feetech Rs485 Servo Driver robot skill.


How to use the Feetech Rs485 Servo Driver robot skill

Drives Feetech serial bus servos - the SM (RS485) series, and the STS and SCS (TTL) series - from ARCx's virtual servo ports.

Once configured, a Feetech servo behaves like any other servo in ARCx: Auto Position, the servo skill, Servo.SetPosition(), the Kinematics Service and everything else move virtual port V1, and this skill turns that into the right packet on the bus.

The bus can be wired to an EZB, or straight to a USB adapter on a COM port of the computer running ARCx (such as the Feetech FE-URT-1), in which case no EZB is needed for the bus itself.

Supported families:

Family Notes
SM series (SM40BL and others, RS485, magnetic encoder) 4096 steps. The register table this skill was written from.
STS series (STS3215, STS3032, STS3020, TTL, magnetic encoder) 4096 steps, same table as SM.
SCS series (SCS15, SCS225, SCS0009, TTL, potentiometer) 1024 steps, big endian words, no acceleration or current registers. From the Feetech documentation, untested.

Untested against hardware at the time of writing - treat the first bring-up with care. For SCS servos, see also the Feetech Bus servo Driver skill, which targets them specifically.

Requirements

  • Feetech servos daisy chained on one bus, all at the same baud rate, each with a different ID.
  • Servo power at their own voltage.
  • One of: an EZB hardware UART (full duplex, can read servos), an EZB digital port (transmit only - servos can be moved but not read), or a COM port with a USB to RS485/TTL adapter (full duplex).

Adding it to a project

  1. Wire the bus and power the servos.
  2. Add the skill (Servo category).
  3. On the Bus tab pick the port type and set the baud rate - Feetech servos ship at 1000000.
  4. On the Tools tab press Scan bus to see which IDs answer.
  5. On the Servos tab add an entry per servo: virtual port, ID, model family, operating mode and position range.
  6. Press Initialize and move a servo to check it.

Mapping ports to IDs

Servos configuration tab

Each entry maps one ARCx virtual port (V0 to V255) to a servo ID. The ID does not have to match the port number - V3 can drive ID 17. Other skills only ever see the virtual port.

Setting Meaning Default
Port The ARCx virtual servo port other skills move. V1
ID The servo ID (0-253) programmed into the servo. 1
Model SM and STS share a table with 4096 steps; SCS has 1024 steps and a different byte order, so this has to be right. SM series
Operating mode Position moves between the min and max. Wheel spins continuously, with the ARCx position choosing direction and speed (centre is stopped). PwmOpenLoop drives the motor directly, with the ARCx position choosing direction and duty (centre is off). Position
Min position / Max position The raw positions the lowest and highest ARCx positions map to. 4095 for SM and STS, 1023 for SCS. 0 / 4095
Invert Reverse the direction, for a mirrored mounting. off
Wheel speed limit Wheel mode: the raw speed the extreme ARCx positions map to. PWM mode: the duty (0-1000). Position 1 is full reverse, the centre stopped, the maximum full forward. 2000
Default goal speed Raw goal speed applied on initialization and used until a skill sets a velocity. 0 is maximum. 0
Default acceleration Raw acceleration (100 steps/s per unit, 0-254) applied on initialization. 0 is maximum. Ignored by SCS, which has no acceleration register. 0
Enabled A disabled entry is kept but ignored, so a servo can be parked without losing its settings. on

Bus settings

Bus configuration tab

Setting Meaning Default
Board index Which EZB's virtual ports are this skill's servos. For the UART and digital port types it is also the EZB the bus is wired to; a COM port bus still needs it for the V ports. 0
Port type UART1 is the usual EZB choice. DigitalPort is transmit-only software serial (no reads, and only 4800-115200). ComPort is a USB to RS485/TTL adapter on this machine. UART1
Digital port Which digital port to transmit from, for DigitalPort. D0
COM port COM3, /dev/ttyUSB0, for ComPort. empty
Baud rate Every servo on the bus must be set to this. 1000000
Response timeout (ms) How long to wait for an answer to a read or ping. 100
Inter-command delay (ms) Pause after every packet. 0 sends as fast as the port can. 2
Initialize on connect Open the port and apply each servo's drive mode and defaults when the EZB connects, or when the project loads for a COM port bus. on
Only reply to reads Tell every servo to answer only reads and pings, so writes are not slowed by replies on the half duplex bus. on
Debug logging Every packet to the log as hex. Useful when wiring a new chain, noisy once it works. off

Telemetry

Telemetry configuration tab

Background polling of every enabled servo's position, speed, temperature, voltage, load, current, protection status and moving flag. Needs a hardware UART or a COM port, and is off by default because every poll is bus traffic.

Setting Meaning Default
Enabled Poll the servos. off
Interval (ms) How often a full pass is started. 1000
Set global variables Publish each reading as script variables. on
Variable prefix Start of every variable name. Feetech
Over temperature limit A servo reaching this many degrees Celsius is reported in the log. 0 disables the check. 65
Release on over temperature Torque off a servo that reaches the limit, so it cools instead of tripping its own protection. on

With the default prefix, port V1 publishes FeetechV1Position, FeetechV1Temperature, FeetechV1Voltage, FeetechV1Load, FeetechV1Current, FeetechV1Status, FeetechV1Moving and FeetechV1Online.

The window

Feetech Rs485 <a href='/Support/Advanced-Fundamentals/servo-motor' target='_top'>servo</a> Driver  <a href='/Support/Skills/Skills-Overview' target='_top'>robot skill</a> window

Bus status and packet counters, Initialize, Scan bus, Read all, Torque on, Release all, and a row per configured servo with its live values and last error.

Sync writes

When several configured servos are moved in the same operation, the driver sends a sync write - one packet for the whole group - so a whole-arm Auto Position frame arrives at the servos together.

EEPROM settings

Tools configuration tab

Most of the Set... control commands write to the servo's EEPROM, so they persist across power cycles and belong in a setup script, not a control loop. The skill unlocks and re-locks the EEPROM around each one; only raw register writes need SetLock by hand.

The Window tab sets the robot skill's window title, its size on the workspace and notes about what it does in this project.

Window configuration tab

Troubleshooting

Symptom Cause
Nothing answers a scan Wrong baud rate, wrong port, unpowered bus, or A/B (or TTL data) wired the wrong way round.
Some servos answer, others do not Duplicate IDs, or a bad link in the chain.
Servos move but cannot be read The bus is on a transmit-only DigitalPort.
Position is wrong or the range is halved Wrong model family - SCS is 1024 steps and big endian, SM/STS are 4096 and little endian.
Movement is jerky with several servos Raise Inter-command delay, or slow down telemetry.
A servo releases itself under load Overload or over-current protection tripped. Check GetStatus, and the protection registers.
A servo hums and jitters when holding Raise the dead band.
A servo vanishes after a baud rate change Change the bus Baud rate to match; the servo kept the new rate.
A servo vanishes after a factory reset Its ID went back to 1 and its baud rate to the factory rate.

See also

  • Feetech Bus servo Driver - the SCS series specifically
  • Dynamixel servo Driver - the same idea for Robotis servos
  • Servo, Auto Position (movement panel), Kinematics Service - things that move these ports

Control Commands for the Feetech Rs485 Servo Driver robot skill

There are Control Commands available for this robot skill which allows the skill to be controlled programmatically from scripts or other robot skills. These commands enable you to automate actions, respond to sensor inputs, and integrate the robot skill with other systems or custom interfaces. If you're new to the concept of Control Commands, we have a comprehensive manual available here that explains how to use them, provides examples to get you started and make the most of this powerful feature.

Control Command Manual

This robot skill has 60 control commands, listed below. Send them from a JavaScript or Python script, from Blockly, or from another robot skill.

The first value is always the window title, which is the name in the title bar of the robot skill on your workspace. It starts out as Feetech Rs485 servo Driver, which is what every example below uses. If you rename the robot skill, or add a second copy of it to the project, use the title as it appears on that window instead.

ControlCommand() can be shortened to CC(), and both spellings work in JavaScript and in Python. The examples are JavaScript; Python is the same call, except that true and false are written True and False.

FactoryReset

Restore factory settings. The ID goes back to 1 and the baud rate to the factory rate

Syntax

ControlCommand("Feetech Rs485 servo Driver", "FactoryReset", (String)servoPort)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "FactoryReset", "servoPort");

GetBusStatus

A one line description of the bus and whether it initialized

Syntax

ControlCommand("Feetech Rs485 servo Driver", "GetBusStatus")

Returns: String

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "GetBusStatus");

GetCurrent

The current draw in mA (SM and STS series only)

Syntax

ControlCommand("Feetech Rs485 servo Driver", "GetCurrent", (String)servoPort)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes

Returns: Double [5.0e324 to 1.7e308]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "GetCurrent", "servoPort");

GetGoalPosition

The raw position the servo was last told to move to

Syntax

ControlCommand("Feetech Rs485 servo Driver", "GetGoalPosition", (String)servoPort)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes

Returns: Integer [-2,147,483,648 to 2,147,483,647]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "GetGoalPosition", "servoPort");

GetIsMoving

True while the servo is still travelling to its goal

Syntax

ControlCommand("Feetech Rs485 servo Driver", "GetIsMoving", (String)servoPort)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "GetIsMoving", "servoPort");

GetLoad

The present load, -1000 to 1000, where 1000 is 100% of stall torque and the sign is the direction

Syntax

ControlCommand("Feetech Rs485 servo Driver", "GetLoad", (String)servoPort)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes

Returns: Integer [-2,147,483,648 to 2,147,483,647]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "GetLoad", "servoPort");

GetPing

True when the servo answers on the bus

Syntax

ControlCommand("Feetech Rs485 servo Driver", "GetPing", (String)servoPort)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "GetPing", "servoPort");

GetPosition

The servo's real position as the raw register value (0 to 4095, 0 to 1023 on SCS)

Syntax

ControlCommand("Feetech Rs485 servo Driver", "GetPosition", (String)servoPort)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes

Returns: Integer [-2,147,483,648 to 2,147,483,647]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "GetPosition", "servoPort");

GetPositionDegrees

The servo's real position in degrees from the start of its range

Syntax

ControlCommand("Feetech Rs485 servo Driver", "GetPositionDegrees", (String)servoPort)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes

Returns: Double [5.0e324 to 1.7e308]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "GetPositionDegrees", "servoPort");

GetPositionScaled

The servo's real position scaled to the ARCx servo position range like any other servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "GetPositionScaled", (String)servoPort)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes

Returns: Integer [-2,147,483,648 to 2,147,483,647]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "GetPositionScaled", "servoPort");

GetServoPorts

The virtual servo ports configured as Feetech servos, as strings such as V1

Syntax

ControlCommand("Feetech Rs485 servo Driver", "GetServoPorts")

Returns: Array of String

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "GetServoPorts");

GetStatus

The active protections, such as overload or temperature. OK when there are none

Syntax

ControlCommand("Feetech Rs485 servo Driver", "GetStatus", (String)servoPort)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes

Returns: String

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "GetStatus", "servoPort");

GetTemperature

The internal temperature in degrees Celsius

Syntax

ControlCommand("Feetech Rs485 servo Driver", "GetTemperature", (String)servoPort)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes

Returns: Integer [-2,147,483,648 to 2,147,483,647]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "GetTemperature", "servoPort");

GetTorqueEnabled

True when the servo's torque is on

Syntax

ControlCommand("Feetech Rs485 servo Driver", "GetTorqueEnabled", (String)servoPort)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "GetTorqueEnabled", "servoPort");

GetVelocity

The present speed in steps per second. Negative is reverse

Syntax

ControlCommand("Feetech Rs485 servo Driver", "GetVelocity", (String)servoPort)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes

Returns: Integer [-2,147,483,648 to 2,147,483,647]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "GetVelocity", "servoPort");

GetVersion

The firmware and servo version the servo reports

Syntax

ControlCommand("Feetech Rs485 servo Driver", "GetVersion", (String)servoPort)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes

Returns: String

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "GetVersion", "servoPort");

GetVoltage

The supply voltage in volts

Syntax

ControlCommand("Feetech Rs485 servo Driver", "GetVoltage", (String)servoPort)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes

Returns: Double [5.0e324 to 1.7e308]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "GetVoltage", "servoPort");

InitializeBus

Open the port and apply every servo's drive mode and defaults, as happens when the EZB connects

Syntax

ControlCommand("Feetech Rs485 servo Driver", "InitializeBus")

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "InitializeBus");

ReadRegisterByte

Read one byte from the servo's memory table at the address

Syntax

ControlCommand("Feetech Rs485 servo Driver", "ReadRegisterByte", (String)servoPort, (Number)address)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 address Number A number, without quotes

Returns: Integer [-2,147,483,648 to 2,147,483,647]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "ReadRegisterByte", "servoPort", 0);

ReadRegisterBytes

Read a number of bytes from the memory table at the address. Returns space separated hex

Syntax

ControlCommand("Feetech Rs485 servo Driver", "ReadRegisterBytes", (String)servoPort, (Number)address, (Number)count)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 address Number A number, without quotes
3 count Number A number, without quotes

Returns: String

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "ReadRegisterBytes", "servoPort", 0, 0);

ReadRegisterInt16

Read a signed 16 bit value from the servo's memory table at the address

Syntax

ControlCommand("Feetech Rs485 servo Driver", "ReadRegisterInt16", (String)servoPort, (Number)address)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 address Number A number, without quotes

Returns: Integer [-2,147,483,648 to 2,147,483,647]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "ReadRegisterInt16", "servoPort", 0);

ReadRegisterUInt16

Read an unsigned 16 bit value from the servo's memory table at the address

Syntax

ControlCommand("Feetech Rs485 servo Driver", "ReadRegisterUInt16", (String)servoPort, (Number)address)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 address Number A number, without quotes

Returns: Integer [-2,147,483,648 to 2,147,483,647]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "ReadRegisterUInt16", "servoPort", 0);

ReleaseAll

Release (torque off) every configured servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "ReleaseAll")

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "ReleaseAll");

ScanBus

Broadcast ping the bus and return a line per servo found (ID, version, status)

Syntax

ControlCommand("Feetech Rs485 servo Driver", "ScanBus")

Returns: Array of String

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "ScanBus");

SetAcceleration

The raw acceleration for position moves, 100 steps/s per unit, 0 to 254. 0 is the servo's maximum. Same as setting the port's acceleration

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetAcceleration", (String)servoPort, (Number)acceleration)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 acceleration Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetAcceleration", "servoPort", 0);

SetAngleResolution

The multiplier of the minimum resolution angle, 1 to 100. Above 1 gives multi turn on STS. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetAngleResolution", (String)servoPort, (Number)multiplier)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 multiplier Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetAngleResolution", "servoPort", 0);

SetBaudRate

Program a new baud rate, as bits per second (1000000, 500000, 250000, 128000, 115200, 76800, 57600, 38400) or the register code 0 to 7. Change the bus baud rate to match afterwards

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetBaudRate", (String)servoPort, (Number)baud)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 baud Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetBaudRate", "servoPort", 0);

SetDeadBand

The clockwise and counter clockwise dead band in steps, 0 to 32. Larger jitters less. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetDeadBand", (String)servoPort, (Number)cw, (Number)ccw)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 cw Number A number, without quotes
3 ccw Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetDeadBand", "servoPort", 0, 0);

SetDriveMode

Switch the servo between Position, Wheel and PwmOpenLoop (or 0, 1, 2) and remember it in the configuration. Saved in the servo's EEPROM

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetDriveMode", (String)servoPort, (String)Position|Wheel|PwmOpenLoop)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 Position|Wheel|PwmOpenLoop Text Your text, in quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetDriveMode", "servoPort", "Position|Wheel|PwmOpenLoop");

SetId

Program a new servo ID (0 to 253) into the servo and update the configuration entry to match

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetId", (String)servoPort, (Number)newId)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 newId Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetId", "servoPort", 0);

SetLedAlarmCondition

Bit flags of the protections that flash the LED: 1 voltage, 2 sensor, 4 temperature, 8 current, 16 angle, 32 overload. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetLedAlarmCondition", (String)servoPort, (Number)flags)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 flags Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetLedAlarmCondition", "servoPort", 0);

SetLock

Lock (true) or unlock (false) the servo's EEPROM. The Set commands above unlock and re-lock on their own; this is for raw register writes

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetLock", (String)servoPort, (Bool)locked)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 locked True or false true or false, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetLock", "servoPort", true);

SetMaxTorque

The max torque, 1000 is 100% of the stall torque. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetMaxTorque", (String)servoPort, (Number)torque)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 torque Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetMaxTorque", "servoPort", 0);

SetMinStartupForce

The minimum startup force (punch), 1000 is 100% of the stall torque. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetMinStartupForce", (String)servoPort, (Number)force)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 force Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetMinStartupForce", "servoPort", 0);

SetOverCurrentTime

How long the protective current may be exceeded before protection triggers, 10 ms per unit. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetOverCurrentTime", (String)servoPort, (Number)time)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 time Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetOverCurrentTime", "servoPort", 0);

SetOverloadTorque

The torque percent threshold that starts the overload timer, 0 to 254. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetOverloadTorque", (String)servoPort, (Number)percent)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 percent Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetOverloadTorque", "servoPort", 0);

SetPositionAsCenter

Make the current physical position of the servo its centre (2048). Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetPositionAsCenter", (String)servoPort)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetPositionAsCenter", "servoPort");

SetPositionCorrection

The position offset in steps, -2047 to 2047. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetPositionCorrection", (String)servoPort, (Number)steps)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 steps Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetPositionCorrection", "servoPort", 0);

SetPositionLimits

The raw min and max position limits the servo will move between. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetPositionLimits", (String)servoPort, (Number)min, (Number)max)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 min Number A number, without quotes
3 max Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetPositionLimits", "servoPort", 0, 0);

SetPositionPID

The position loop P, D and I coefficients, each 0 to 254. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetPositionPID", (String)servoPort, (Number)p, (Number)d, (Number)i)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 p Number A number, without quotes
3 d Number A number, without quotes
4 i Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetPositionPID", "servoPort", 0, 0, 0);

SetPositionRaw

Move the servo on the virtual port (v1, or id:5 to address by servo ID) to a raw position (0 to 4095, 0 to 1023 on SCS), bypassing the ARCx position mapping

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetPositionRaw", (String)servoPort, (Number)rawPosition)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 rawPosition Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetPositionRaw", "servoPort", 0);

SetPositionRawTimed

Move to a raw position over the given time in ms (0 to ignore) at the given raw speed (0 for maximum)

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetPositionRawTimed", (String)servoPort, (Number)rawPosition, (Number)timeMs, (Number)speed)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 rawPosition Number A number, without quotes
3 timeMs Number A number, without quotes
4 speed Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetPositionRawTimed", "servoPort", 0, 0, 0);

SetProtectionTime

How long the overload torque may be exceeded before protection triggers, 10 ms per unit. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetProtectionTime", (String)servoPort, (Number)time)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 time Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetProtectionTime", "servoPort", 0);

SetProtectionTorque

The torque percent used once overload protection has triggered, 0 to 254. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetProtectionTorque", (String)servoPort, (Number)percent)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 percent Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetProtectionTorque", "servoPort", 0);

SetProtectiveCurrent

The current at which protection triggers, 6.5 mA per unit, 0 to 511. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetProtectiveCurrent", (String)servoPort, (Number)current)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 current Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetProtectiveCurrent", "servoPort", 0);

SetPwm

PWM open loop mode: drive the motor at a signed duty, -1000 to 1000, 0 to stop. Bypasses the ARCx position mapping

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetPwm", (String)servoPort, (Number)duty)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 duty Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetPwm", "servoPort", 0);

SetReturnDelayTime

How long the servo waits before answering, 2 s per unit, 0 to 254. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetReturnDelayTime", (String)servoPort, (Number)delay)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 delay Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetReturnDelayTime", "servoPort", 0);

SetSpeed

The raw goal speed for position moves. 0 is the servo's maximum. Same as setting the port's velocity

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetSpeed", (String)servoPort, (Number)speed)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 speed Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetSpeed", "servoPort", 0);

SetSpeedI

The speed loop integral coefficient used in wheel mode, 0 to 254. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetSpeedI", (String)servoPort, (Number)i)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 i Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetSpeedI", "servoPort", 0);

SetSpeedP

The speed loop proportional coefficient used in wheel mode, 0 to 254. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetSpeedP", (String)servoPort, (Number)p)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 p Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetSpeedP", "servoPort", 0);

SetStatusReturnLevel

true: answer reads and pings only (keeps the bus quiet); false: answer every instruction. Use ALL as the port for every servo. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetStatusReturnLevel", (String)servoPort|ALL, (Bool)onlyReads)

Parameters

# Name Type What to pass
1 servoPort|ALL Text Your text, in quotes
2 onlyReads True or false true or false, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetStatusReturnLevel", "servoPort|ALL", true);

SetTemperatureLimit

The maximum operating temperature in Celsius, 0 to 100. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetTemperatureLimit", (String)servoPort, (Number)celsius)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 celsius Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetTemperatureLimit", "servoPort", 0);

SetTorqueEnable

Turn torque on (hold position) or off (free to move by hand). Off is the same as releasing the port

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetTorqueEnable", (String)servoPort, (Bool)enabled)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 enabled True or false true or false, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetTorqueEnable", "servoPort", true);

SetTorqueEnableAll

Turn torque on or off for every configured servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetTorqueEnableAll", (Bool)enabled)

Parameters

# Name Type What to pass
1 enabled True or false true or false, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetTorqueEnableAll", true);

SetTorqueLimit

The runtime torque limit, 1000 is 100% of the stall torque. Reloaded from the max torque on power up

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetTorqueLimit", (String)servoPort, (Number)torque)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 torque Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetTorqueLimit", "servoPort", 0);

SetUnloadingCondition

Bit flags of the protections that release the servo: 1 voltage, 2 sensor, 4 temperature, 8 current, 16 angle, 32 overload. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetUnloadingCondition", (String)servoPort, (Number)flags)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 flags Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetUnloadingCondition", "servoPort", 0);

SetVoltageLimits

The operating voltage window in volts, for example 9.0 and 14.0. Saved in the servo

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetVoltageLimits", (String)servoPort, (Number)minVolts, (Number)maxVolts)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 minVolts Number A number, without quotes
3 maxVolts Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetVoltageLimits", "servoPort", 0, 0);

SetWheelSpeed

Wheel mode: spin at the raw signed speed, negative for reverse, 0 to stop. Bypasses the ARCx position mapping

Syntax

ControlCommand("Feetech Rs485 servo Driver", "SetWheelSpeed", (String)servoPort, (Number)speed)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 speed Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "SetWheelSpeed", "servoPort", 0);

WriteRegisterByte

Write one byte to the servo's memory table at the address. Unlock the EEPROM first for addresses below 40

Syntax

ControlCommand("Feetech Rs485 servo Driver", "WriteRegisterByte", (String)servoPort, (Number)address, (Number)value)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 address Number A number, without quotes
3 value Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "WriteRegisterByte", "servoPort", 0, 0);

WriteRegisterInt16

Write a 16 bit value (2 bytes, in the servo's byte order) to the memory table at the address

Syntax

ControlCommand("Feetech Rs485 servo Driver", "WriteRegisterInt16", (String)servoPort, (Number)address, (Number)value)

Parameters

# Name Type What to pass
1 servoPort Text Your text, in quotes
2 address Number A number, without quotes
3 value Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Rs485 servo Driver", "WriteRegisterInt16", "servoPort", 0, 0);

This list is read out of the robot skill itself each time its package is uploaded, so it matches the published version (v4).


ARC Pro

Upgrade to ARC Pro

ARC Pro is more than a tool; it's a creative playground for robot enthusiasts, where you can turn your wildest ideas into reality.