Hitachi-LG LDS Lidar icon Hitachi-LG LDS Lidar — Hitachi-LG LDS 360-degree LiDAR driver streaming scans into ARC NMS for obstacle detection, SLAM use, Arduino hookup, config options and variables. Try it →
 
Feetech Bus Servo Driver Robot Skill

Feetech Bus Servo Driver

by Feetech

Drives Feetech SCS TTL serial bus servos from ARC virtual ports over EZB UART, digital port, or USB COM adapter.

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 Bus 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 Bus 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 Bus Servo Driver robot skill.


How to use the Feetech Bus Servo Driver robot skill

Drives Feetech SCS series TTL serial bus servos - SCS15, SCS115, SCS0009, SCS215, SCS225, SCS2332 and others that speak the SCS protocol - from ARCx's virtual servo ports.

Once configured, an SCS 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, in which case no EZB is needed for the bus itself.

SCS servos use a 1024 step range over roughly 200 degrees, with big endian register words - a different layout from the SM and STS series. The Feetech Rs485 servo Driver skill covers those; this one is the SCS specialist.

Untested against hardware at the time of writing - treat the first bring-up with care.

Requirements

  • SCS servos daisy chained on one bus, all at the same baud rate, each with a different ID.
  • Servo power at their own voltage (SCS servos are typically 6-7.4 V).
  • 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 TTL adapter.

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 - SCS servos usually 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, mode and range.
  6. Press Initialize and move a servo to check it.

Mapping ports to IDs

Servos configuration tab

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 SCS15/SCS115, SCS0009, SCS2xx (SCS215/225/2332), or Other for anything else speaking the SCS protocol. SCS15
Operating mode Position holds an angle between the limits. Wheel spins continuously, with the ARCx position choosing direction and speed (centre is stopped). Position
Min position / Max position The raw positions the lowest and highest ARCx positions map to, within 0-1023 over 200 degrees. The defaults keep clear of the end stops, as the original ARC skill did. 23 / 1000
Invert Reverse the direction, for a mirrored mounting. off
Wheel speed limit Wheel mode: the raw speed (0-1023) the extreme ARCx positions map to. Position 1 is full clockwise, the centre stopped, the maximum full counter-clockwise. 1023
Default goal speed Raw goal speed for position moves (0.19 degrees/second per unit, 0-1023) until a skill sets a velocity. 0 is the servo's maximum; 1000 is what the ARC skill always used. 1000
Has moving register This model has the moving flag at address 66. Not every SCS model does, and one without it answers a read with garbage - leave off unless the datasheet lists it. off
Has current register This model has the present current register at address 69. Same caution. off
Enabled A disabled entry is kept but ignored. 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, 4800-115200 only). ComPort is a USB to 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 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. off

Telemetry

Telemetry configuration tab

Background polling of every enabled servo's position, speed, temperature, voltage, load, current and status. 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. Scs
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 ScsV1Position, ScsV1Temperature, ScsV1Voltage, ScsV1Load, ScsV1Status and ScsV1Online, plus current and moving for models that have those registers.

The window

Feetech Bus <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.

Wheel mode on SCS

An SCS servo is put into continuous rotation by zeroing both angle limits; it is put back into position mode by setting them again. The SetWheelMode and SetJointMode control commands do exactly that, and remember the change in the configuration.

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 the data line wired wrong.
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.
The range is wrong or positions look doubled An SM or STS servo is on this bus. Use the Feetech Rs485 servo Driver for those - the word order differs.
GetIsMoving or GetCurrent returns nonsense The model has no such register. Turn off Has moving register / Has current register.
The servo grinds at the end of travel The min/max positions are past the mechanical stops. The defaults of 23 and 1000 exist for that reason.
A servo hums and jitters when holding Raise the dead band.
A servo releases itself under load Overload or overheat protection tripped. Check GetStatus.
A servo vanishes after a baud rate change or factory reset Its ID went back to 1 and/or its baud rate changed; match the bus settings.

See also

  • Feetech Rs485 servo Driver - the SM, STS and SCS families in one skill
  • 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 Bus 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 49 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 Bus 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 Bus 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 Bus servo Driver", "FactoryReset", "servoPort");

GetBusStatus

A one line description of the bus and whether it initialized

Syntax

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

Returns: String

Example

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

GetCurrent

The current draw in mA. Only on models with the current register (address 69)

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "GetCurrent", "servoPort");

GetGoalPosition

The raw position the servo was last told to move to

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "GetGoalPosition", "servoPort");

GetIsMoving

True while the servo is still travelling to its goal. Only on models with the moving register (address 66)

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "GetIsMoving", "servoPort");

GetLoad

The present load, -1023 to 1023, where the sign is the direction

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "GetLoad", "servoPort");

GetPing

True when the servo answers on the bus

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "GetPing", "servoPort");

GetPosition

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

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "GetPosition", "servoPort");

GetPositionDegrees

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

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "GetPositionDegrees", "servoPort");

GetPositionScaled

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

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "GetPositionScaled", "servoPort");

GetServoPorts

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

Syntax

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

Returns: Array of String

Example

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

GetSpeed

The present speed. Negative is clockwise

Syntax

ControlCommand("Feetech Bus servo Driver", "GetSpeed", (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 Bus servo Driver", "GetSpeed", "servoPort");

GetStatus

The active protections from the servo's last reply, such as overload or overheat. OK when there are none

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "GetStatus", "servoPort");

GetTemperature

The internal temperature in degrees Celsius

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "GetTemperature", "servoPort");

GetTorqueEnabled

True when the servo's torque is on

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "GetTorqueEnabled", "servoPort");

GetVersion

The version the servo reports

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "GetVersion", "servoPort");

GetVoltage

The supply voltage in volts

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "GetVoltage", "servoPort");

InitializeBus

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

Syntax

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

Returns: Boolean [true or false]

Example

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

ReadRegisterByte

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

Syntax

ControlCommand("Feetech Bus 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 Bus 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 Bus 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 Bus servo Driver", "ReadRegisterBytes", "servoPort", 0, 0);

ReadRegisterWord

Read a 16 bit value (high byte first) from the memory table at the address

Syntax

ControlCommand("Feetech Bus servo Driver", "ReadRegisterWord", (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 Bus servo Driver", "ReadRegisterWord", "servoPort", 0);

ReleaseAll

Release (torque off) every configured servo

Syntax

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

Returns: Boolean [true or false]

Example

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

ScanBus

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

Syntax

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

Returns: Array of String

Example

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

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 Bus 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 Bus servo Driver", "SetBaudRate", "servoPort", 0);

SetDeadBand

The clockwise and counter clockwise dead band, about 0.38 degrees per unit. Larger jitters less. Saved in the servo

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "SetDeadBand", "servoPort", 0, 0);

SetDifferentialSampling

The differential sampling coefficient of the position loop, 0 to 254. Saved in the servo

Syntax

ControlCommand("Feetech Bus servo Driver", "SetDifferentialSampling", (String)servoPort, (Number)value)

Parameters

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

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Bus servo Driver", "SetDifferentialSampling", "servoPort", 0);

SetId

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

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "SetId", "servoPort", 0);

SetIntegralLimit

The limit of the position loop's integral term, 0 to 1023. Saved in the servo

Syntax

ControlCommand("Feetech Bus servo Driver", "SetIntegralLimit", (String)servoPort, (Number)limit)

Parameters

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

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Bus servo Driver", "SetIntegralLimit", "servoPort", 0);

SetJointMode

Put the servo back into position mode by setting its angle limits, and remember it in the configuration. Saved in the servo

Syntax

ControlCommand("Feetech Bus servo Driver", "SetJointMode", (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 Bus servo Driver", "SetJointMode", "servoPort", 0, 0);

SetLedAlarmCondition

Bit flags of the protections that flash the LED: 1 voltage, 4 overheat, 32 overload, 0 turns it off. Saved in the servo

Syntax

ControlCommand("Feetech Bus 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 Bus 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 Bus 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 Bus servo Driver", "SetLock", "servoPort", true);

SetMaxTorque

The maximum output torque, 0 to 1023. Saved in the servo

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "SetMaxTorque", "servoPort", 0);

SetMinimumPWM

The minimum PWM (punch), the smallest output the servo drives the motor with, 0 to 1023. Saved in the servo

Syntax

ControlCommand("Feetech Bus servo Driver", "SetMinimumPWM", (String)servoPort, (Number)pwm)

Parameters

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

Returns: Boolean [true or false]

Example

var result = ControlCommand("Feetech Bus servo Driver", "SetMinimumPWM", "servoPort", 0);

SetPositionLimits

The raw angle limits the servo will move between, 0 to 1023. Both zero is wheel mode. Saved in the servo

Syntax

ControlCommand("Feetech Bus 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 Bus 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 Bus 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 Bus 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 1023), bypassing the ARCx position mapping

Syntax

ControlCommand("Feetech Bus 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 Bus 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). The servo uses the speed when both are given

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "SetPositionRawTimed", "servoPort", 0, 0, 0);

SetReturnDelayTime

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

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "SetReturnDelayTime", "servoPort", 0);

SetSpeed

The raw goal speed for position moves, 0.19 degrees/s per unit, 0 to 1023. 0 is the servo's maximum. Same as setting the port's velocity

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "SetSpeed", "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 Bus 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 Bus servo Driver", "SetStatusReturnLevel", "servoPort|ALL", true);

SetTemperatureLimit

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

Syntax

ControlCommand("Feetech Bus 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 Bus 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 Bus 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 Bus servo Driver", "SetTorqueEnable", "servoPort", true);

SetTorqueEnableAll

Turn torque on or off for every configured servo

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "SetTorqueEnableAll", true);

SetUnloadingCondition

Bit flags of the protections that release the servo: 1 voltage, 4 overheat, 32 overload. Saved in the servo

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "SetUnloadingCondition", "servoPort", 0);

SetVoltageLimits

The operating voltage window in volts, for example 4.5 and 8.5. Saved in the servo

Syntax

ControlCommand("Feetech Bus 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 Bus servo Driver", "SetVoltageLimits", "servoPort", 0, 0);

SetWheelMode

Put the servo into continuous rotation (motor) mode by zeroing both angle limits, and remember it in the configuration. Saved in the servo

Syntax

ControlCommand("Feetech Bus servo Driver", "SetWheelMode", (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 Bus servo Driver", "SetWheelMode", "servoPort");

SetWheelSpeed

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

Syntax

ControlCommand("Feetech Bus 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 Bus 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 Bus 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 Bus servo Driver", "WriteRegisterByte", "servoPort", 0, 0);

WriteRegisterWord

Write a 16 bit value (high byte first) to the memory table at the address

Syntax

ControlCommand("Feetech Bus servo Driver", "WriteRegisterWord", (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 Bus servo Driver", "WriteRegisterWord", "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

Subscribe to ARC Pro, and your robot will become a canvas for your imagination, limited only by your creativity.