Bus Servo SDK User Manual (MATLAB)
| 版本 | GitHub | 开发资源包 |
|---|---|---|
| v1.2026.0507 | 点击下载 |
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→ onlinefalse→ 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