Skip to content

Bus Servo SDK User Manual (MATLAB)

版本 GitHub 开发资源包
v1.2026.0507 GitHub 点击下载

1. SDK Introduction

This SDK is used to control Fashion Star UART servo through serial port (UART). It currently supports:

  • Single-turn angle control
  • Multi-turn angle control
  • Single-turn angle readback
  • Multi-turn angle readback
  • Damping mode
  • Stop control
  • Origin setting
  • Reset turns
  • Async commands
  • Data monitoring
  • Sync command - angle control
  • Sync command - data monitoring

2. Environment Requirements

  • MATLAB R2016
  • serial port Toolbox (built in)
  • Windows / Linux / Mac

3. File Structure

Servo.m          % 核心SDK类
demo.m     % 示例

4. Quick Start

4.1 Initialization

servo = Servo('COM3', 115200);

4.2 Detect Servo

ok = servo.ping(1);

Returns:

  • true → online
  • false → offline

4.3 Single-Turn Angle Control

servo.setAngle(id, angle, time, power);

Parameter description:

Parameter Meaning
id servo ID
angle Angle (°)
time Motion time (ms)
power Power

Example:

servo.setAngle(1, 90, 500, 2000);

4.4 Single-Turn Angle Readback

angle = servo.readAngle(id);

Returns:

  • Unit: degrees (°)
  • Failure return: NaN

4.5 Multi-Turn Angle Control

servo.setAngleMulti(id, angle, time, power);

Example:

servo.setAngleMulti(1, 1080, 1000, 3000);

4.6 Multi-Turn Angle Readback

[angle, turns] = servo.readAngleMulti(id);

Returns:

Parameter Meaning
angle Current angle
turns Number of turns

4.7 Stop Mode

servo.stop(id, mode, power);

4.8 Damping Mode

servo.damping(id, power);

4.9 Origin Setting

servo.setOrigin(id);

4.10 Reset Turns

servo.resetTurn(id);

4.11 Async Commands

servo.beginAsync();
...具体要发送的指令...
servo.endAsync(0); 

4.12 Sync Commands

% ====== 同步指令-单圈角度控制  ======
disp('--- SYNC-SET-ANGLE---');
ids = [1 0 3];
angles = [90 45 -30];
times = [500 500 500];
powers = [8000 8000 8000];
servo.syncSetAngle(ids, angles, times, powers);
pause(3);



% ====== 同步指令-多圈角度控制 ======
disp('--- SYNC-SET-ANGLE-MULTI---');
ids = [0 2 3];
angles = [1080 720 -360];   
times = [1000 1000 1000];
powers = [8000 8000 8000];
servo.syncSetAngleMulti(ids, angles, times, powers);

% ===== 批量监控 =====
datas = servo.syncReadMonitor(ids);

% ===== 输出 =====
for i = 1:length(datas)


    fprintf('\n=== Servo %d ===\n', datas(i).id);
    fprintf('Angle     : %.1f °\n', datas(i).angle);
    fprintf('Turns     : %d\n', datas(i).turns);
    fprintf('Temp      : %.2f ℃\n', datas(i).temperature);
    fprintf('Voltage   : %.2f V\n', datas(i).voltage/1000);
    fprintf('Current   : %.3f A\n', datas(i).current/1000);
    fprintf('Power     : %.2f W\n', datas(i).power/1000);

end

4.13 Data Monitoring

servo.readMonitor(id);

5. Example Program

Refer to the contents of the demo.m program.

Basic flow:

servo = Servo('COM3',115200);

if servo.ping(1)
    servo.setAngle(1, 90, 500, 200);
    pause(1);

    angle = servo.readAngle(1);
    disp(angle);
end

delete(servo);

6. Notes (Important)

1. LEN Definition

LEN = 1 + payload长度

2. timeout Recommendation

timeout = 0.02;   % 推荐

3. Serial Port Conflict

Before initialization, it is recommended to:

instrreset;

4. Data Exception (NaN)

Possible causes:

  • Incorrect ID
  • Wiring issue
  • Incorrect baud rate