通信和信息命令
注意: 在通过通信协议直接通信之前,需要在 M5Stack-basic 上烧录 "Transponder",并在 Atom 上烧录最新的 atomMain。
请详细阅读接口协议文档,并在测试后继续程序开发。 |
---|
1 USB 通信设置
确保准备好以下设置:
- 主线接口:USB Type-C 连接电脑和基本
- 波特率: 115200
- 数据位: 8
- 奇偶校验位: none
- 停止位: 1
2 指令帧简介 & 指导
主 PC 通过 M5Stakc-basic 向外围 PC 传输数据。外围 PC 将数据解码为带有返回值的命令,然后在 500 毫秒内将结果发送回主 PC。
3 信息命令的发送和接收格式
发送和接收都应以十六进制表示。每条命令应包含 5 个部分,如下所示。第 3 和第 4 部分可以留空。
- 1 命令引脚:0xFE 0xFE
- 不变
- 不可或缺
- 2 有效长度:
- 总长度包括针脚、序列号、功能代码和端点
- 不可或缺
- 3 序列号:00 ~ 8F
- 已开发指令的相应数量
- 可以留空。
- 4 功能代码
- 以目标为导向
- 可以留空。
- 5 结束: 0XFA
- 不变
- 不可或缺
4 命令解释
主 PC 通过 M5Stakc-basic 向外围 PC 传输数据。外围 PC 将数据解码为带有返回值的命令,然后在 500 毫秒内将结果发送回主 PC。
类型 | 数据 | 长度 | 功能 |
---|---|---|---|
指令框架 | 开始位: 0 | 1 | 起始帧识别,0XFE |
开始位: 1 | 1 | 起始帧识别,0XFE | |
位数据长度 | 1 | 不同的命令对应不同的数据长度 | |
指令位 | 1 | 取决于不同的命令 | |
指令框架 | 数据 | 0-16 | 命令与数据,取决于不同的命令 |
结束框架 | 结束位 | 1 | 停止位,0XFA |
5 单一指令命令说明
开机
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X10 |
Data[4] | 结束帧 | 0XFA |
示例:
串口传输:FE FE 02 10 FA
无返回值
功率下降和连接中断
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X11 |
Data[4] | 结束帧 | 0XFA |
示例:
串口传输:FE FE 02 11 FA
无返回值
检查 Atom 的状态
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X12 |
Data[4] | 结束帧 | 0XFA |
示例:
串口传输:FE FE 02 12 FA
返回值:数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值:识别帧 | 0XFE |
Data[1] | 返回值:识别帧 | 0XFE |
Data[2] | 返回值:识别帧 | 0X03 |
Data[3] | 返回值:命令帧 | 0X12 |
Data[4] | 开机/关机 | 0X01/0X00 |
Data[5] | 结束帧 | 0XFA |
示例:
假设 Atom 已接通电源:
端口返回:fe fe 03 12 01 fa
关节使能
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 命令帧 | 0X13 |
Data[4] | 舵机序列号 | 1~6/254 |
Data[5] | 开启/关闭 | 0X01/0X00 |
Data[6] | 结束帧 | 0XFA |
示例:
串口传输:FE FE 02 13 FA
无返回值
获取机器人错误状态
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0X15 |
Data[4] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 02 15 FA
返回值:数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X12 |
Data[3] | 返回值: 命令帧 | 0X15 |
Data[4] | 返回值: 电机1错误值高位 | servo1_high |
Data[5] | 返回值: 电机1错误值低位 | servo1_low |
Data[6] | 返回值: 电机2错误值高位 | servo2_high |
Data[7] | 返回值: 电机2错误值低位 | servo2_low |
Data[8] | 返回值: 电机3错误值高位 | servo3_high |
Data[9] | 返回值: 电机3错误值低位 | servo3_low |
Data[10] | 返回值: 电机4错误值高位 | servo4_high |
Data[11] | 返回值: 电机4错误值低位 | servo4_low |
Data[12] | 返回值: 电机5错误值高位 | servo5_high |
Data[13] | 返回值: 电机5错误值低位 | servo5_low |
Data[14] | 返回值: 电机6错误值高位 | servo6_high |
Data[15] | 返回值: 电机6错误值低位 | servo6_low |
Data[16] | 返回值: 电机7错误值高位 | servo7_high |
Data[17] | 返回值: 电机7错误值低位 | servo7_low |
Data[18] | 返回值: 电机8错误值高位 | servo8_high |
Data[19] | 返回值: 电机8错误值低位 | servo8_low |
Data[20] | 结束帧 | 0XFA |
示例:
假设 Atom 已成功连接:
端口返回:fe fe fe 12 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa
清除机器人异常
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0X16 |
Data[4] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 02 16 FA
读取接收指令队列总长度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0X17 |
Data[4] | 结束帧 | 0XFA |
示例:
端口返回:FE FE 03 17 03 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X03 |
Data[3] | 命令帧 | 0X17 |
Data[4] | 接收指令队列总长度 | 0X03 |
Data[5] | 结束帧 | 0XFA |
设置接收指令队列总长度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 命令帧 | 0X18 |
Data[4] | 队列总长度 | 0X10 |
Data[5] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 03 18 10 FA
清除接收指令队列
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0X19 |
Data[5] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 02 19 FA
读取接收队列当前长度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0X08 |
Data[4] | 结束帧 | 0XFA |
示例:
端口返回:FE FE 03 08 03 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X03 |
Data[3] | 命令帧 | 0X08 |
Data[4] | 接收指令队列总长度 | 0X03 |
Data[5] | 结束帧 | 0XFA |
读取单关节角度(读取走位信息)
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 命令帧 | 0X1c |
Data[4] | 关节序列号 | 0X01 |
Data[5] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 03 1c 01 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 起始帧 | 0XFE |
Data[1] | 返回值: 起始帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X05 |
Data[3] | 返回值: 命令帧 | 0X1c |
Data[4] | 舵机序列号 | 0X01 |
Data[5] | 舵机角度高位 | Angle_high |
Data[6] | 舵机角度低位 | Angle_low |
Data[7] | 结束帧 | 0XFA |
示例:
返回值 of port: FE FE 05 1c 01 00 8C FA
temp = angle_low+angle_high*256
Angle=(temp \ 33000 ?(temp – 65536) : temp)/100
解释:如果 temp 大于 33000,则 temp 减去 65536,然后除以 100;如果 temp 小于 33000,则 temp 直接除以 100。
读取角度(读取走位信息)
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0X20 |
Data[4] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 02 20 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 起始帧 | 0XFE |
Data[1] | 返回值: 起始帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X0A |
Data[3] | 返回值: 命令帧 | 0X20 |
Data[4] | 1 号舵机角度高位 | Angle1_high |
Data[5] | 1 号舵机角度低位 | Angle1_low |
Data[6] | 2 号舵机角度高位 | Angle2_high |
Data[7] | 2 号舵机角度低位 | Angle2_low |
Data[8] | 3 号舵机角度高位 | Angle3_high |
Data[9] | 3 号舵机角度低位 | Angle3_low |
Data[10] | 4 号舵机角度高位 | Angle4_high |
Data[11] | 4 号舵机角度低位 | Angle4_low |
Data[12] | 5 号舵机角度高位 | Angle5_high |
Data[13] | 5 号舵机角度低位 | Angle5_low |
Data[14] | 6 号舵机角度高位 | Angle6_high |
Data[15] | 6 号舵机角度低位 | Angle6_low |
Data[16] | 7 号舵机角度高位 | Angle7_high |
Data[17] | 7 号舵机角度低位 | Angle7_low |
Data[18] | 结束帧 | 0XFA |
示例:
返回值 of port: FE FE 0E 20 00 8C 00 3D FF E6 FF 3F 00 AF FF 51 00 3B 00 4F FA
如何获取关节角度 1:
temp = angle1_low+angle1_high*256
Angle1=(temp \ 33000 ?(temp – 65536) : temp)/100
解释:如果 temp 大于 33000,则 temp 减去 65536,然后除以 100;如果 temp 小于 33000,则 temp 直接除以 100。
其他关节角度的计算方法与此类似。
发送角度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X06 |
Data[3] | 命令帧 | 0X21 |
Data[4] | 舵机序列号 | joint_no |
Data[5] | 高角度 | angle_high |
Data[6] | 低角度 | angle_low |
Data[7] | 指定速度 | sp |
Data[8] | 结束帧 | 0XFA |
示例:
让 1 号舵机移动到零位
串口传输: FE FE 06 21 01 00 00 14 FA
关节号:1-7
angle_high: byte
计算方法:角度值乘以 100 并转换为积分形式,得到十六进制高字节
angle_low: byte
计算方法:角度值乘以 100 并转换为积分形式,得到十六进制低字节
无返回值
发送所有角度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X11 |
Data[3] | 命令帧 | 0X22 |
Data[4] | 1 号舵机角度高位 | Angle1_high |
Data[5] | 1 号舵机角度低位 | Angle1_low |
Data[6] | 2 号舵机角度高位 | Angle2_high |
Data[7] | 2 号舵机角度低位 | Angle2_low |
Data[8] | 3 号舵机角度高位 | Angle3_high |
Data[9] | 3 号舵机角度低位 | Angle3_low |
Data[10] | 4 号舵机角度高位 | Angle4_high |
Data[11] | 4 号舵机角度低位 | Angle4_low |
Data[12] | 5 号舵机角度高位 | Angle5_high |
Data[13] | 5 号舵机角度低位 | Angle5_low |
Data[14] | 6 号舵机角度高位 | Angle6_high |
Data[15] | 6 号舵机角度低位 | Angle6_low |
Data[16] | 7 号舵机角度高位 | Angle7_high |
Data[17] | 7 号舵机角度低位 | Angle7_low |
Data[18] | 指定速度 | Sp |
Data[19] | 结束帧 | 0XFA |
示例:
向整个关节发送 0 角度,让舵机移动到零位。
串口传输: FE FE 0F 22 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1E FA
angle1_high: byte
计算方法:角度值乘以 100 并转换为积分形式,得到十六进制高字节
angle1_low: byte
计算方法:角度值乘以 100 并转换为积分形式,得到十六进制低字节
其他角度的计算方法与此类似。
no 返回值
机器人停止运动
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0X29 |
Data[4] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 02 26 FA
无返回值
移动检查
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0X2B |
Data[4] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 02 2B FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 帧头 | 0XFE |
Data[1] | 返回值: 帧头 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X03 |
Data[3] | 返回值: 命令帧 | 0X2B |
Data[4] | 运动/不运动 | 0X01/0X00 |
Data[5] | 结束帧 | 0XFA |
示例:
假设程序正在运行:
port 返回值: FE FE 03 2B 01 FA
发送电位值
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X05 |
Data[3] | 命令帧 | 0X3A |
Data[4] | 舵机序列号 | Joint |
Data[5] | 电位值高位 | Encoder_high |
Data[6] | 电位值低位 | Encoder_low |
Data[7] | 结束帧 | 0XFA |
示例:
将 5 号关节设置为 2048 电位
串口传输: FE FE 05 3A 05 08 00 FA
关节序号从 0 到 5
Joint 的数据类型:byte
Encoder_high 的数据类型:byte
计算方法:获取电位值高位(十六进制形式)
Encoder_low 的数据类型:byte
计算方法:获取电位值低位(十六进制形式)
无返回值
获取电位值
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 命令帧 | 0X3B |
Data[4] | 关节序号 | joint |
Data[5] | 结束帧 | 0XFA |
示例:
获取 NO.2 舵机的潜力
joint_no 取值范围:1-7
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X04 |
Data[3] | 返回值: 命令帧 | 0X3B |
Data[4] | 舵机电位值高位 | Encoder_high |
Data[5] | 舵机电位值低位 | Encoders_low |
Data[6] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 04 3B 08 07 FA
如何计算电位值:
电位值 = 电位值低位 + 电位值高位 * 256
发送七个舵机的电位值
2\3舵机方向相反,非2048零位时,需要比如2号:1800;那么3号需要为2296
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X13 |
Data[3] | 命令帧 | 0X3C |
Data[4] | 1 号舵机的高字节 | encoder_1_high |
Data[5] | 1 号舵机的低字节 | encoder_1_low |
Data[6] | 2 号舵机的高字节 | encoder_2_high |
Data[7] | 2 号舵机的低字节 | encoder_2_low |
Data[8] | 3 号舵机的高字节 | encoder_3_high |
Data[9] | 3 号舵机的低字节 | encoder_3_low |
Data[10] | 4 号舵机的高字节 | encoder_4_high |
Data[11] | 4 号舵机的低字节 | encoder_4_low |
Data[12] | 5 号舵机的高字节 | encoder_5_high |
Data[13] | 5 号舵机的低字节 | encoder_5_low |
Data[14] | 6 号舵机的高字节 | encoder_6_high |
Data[15] | 6 号舵机的低字节 | encoder_6_low |
Data[16] | 7 号舵机的高字节 | encoder_7_high |
Data[17] | 7 号舵机的低字节 | encoder_7_low |
Data[18] | 8 号舵机的高字节 | encoder_8_high |
Data[19] | 8 号舵机的低字节 | encoder_8_low |
Data[20] | 指定速度 | Sp |
Data[21] | 结束帧 | 0XFA |
示例:
发送所有电机的电位值均为 2048,速度为 20
串口传输: FE FE 13 3C 08 00 08 00 08 00 08 00 08 00 08 00 08 00 08 00 14 FA
参考上方发送单独电位值
encoder_1_high 的数据类型: byte
计算方法:将 1 号舵机的电位转换为积分形式,得到高字节十六进制数
encoder_1_low 的数据类型: byte
计算方法:将 1 号舵机的电位转换为积分形式,得到低字节十六进制数
sp: 字节数据类型,范围为 0 至 100
无返回值
发送七个舵机的电位值
2\3舵机方向相反,非2048零位时,需要比如2号:1800;那么3号需要为2296
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X22 |
Data[3] | 命令帧 | 0X3E |
Data[4] | 1 号舵机的高字节 | encoder_1_high |
Data[5] | 1 号舵机的低字节 | encoder_1_low |
Data[6] | 2 号舵机的高字节 | encoder_2_high |
Data[7] | 2 号舵机的低字节 | encoder_2_low |
Data[8] | 3 号舵机的高字节 | encoder_3_high |
Data[9] | 3 号舵机的低字节 | encoder_3_low |
Data[10] | 4 号舵机的高字节 | encoder_4_high |
Data[11] | 4 号舵机的低字节 | encoder_4_low |
Data[12] | 5 号舵机的高字节 | encoder_5_high |
Data[13] | 5 号舵机的低字节 | encoder_5_low |
Data[14] | 6 号舵机的高字节 | encoder_6_high |
Data[15] | 6 号舵机的低字节 | encoder_6_low |
Data[16] | 7 号舵机的高字节 | encoder_7_high |
Data[17] | 7 号舵机的低字节 | encoder_7_low |
Data[18] | 8 号舵机的高字节 | encoder_8_high |
Data[19] | 8 号舵机的低字节 | encoder_8_low |
Data[20] | 1号舵机指定速度 | Sp |
Data[21] | 2号舵机指定速度 | Sp |
Data[22] | 3号舵机指定速度 | Sp |
Data[23] | 4号舵机指定速度 | Sp |
Data[24] | 5号舵机指定速度 | Sp |
Data[25] | 6号舵机指定速度 | Sp |
Data[26] | 7号舵机指定速度 | Sp |
Data[27] | 8号舵机指定速度 | Sp |
Data[28] | 结束帧 | 0XFA |
示例:
发送所有电机的电位值均为 2048,速度为 20
串口传输: FE FE 22 3E 08 00 08 00 08 00 08 00 08 00 08 00 08 00 08 00 14 14 14 14 14 14 14 14 FA
参考上方发送单独电位值
encoder_1_high 的数据类型: byte
计算方法:将 1 号舵机的电位转换为积分形式,得到高字节十六进制数
encoder_1_low 的数据类型: byte
计算方法:将 1 号舵机的电位转换为积分形式,得到低字节十六进制数
sp: 字节数据类型,范围为 0 至 100
无返回值
读取七个舵机的电位值
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0X3D |
Data[4] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 02 3D FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X12 |
Data[3] | 命令帧 | 0X3D |
Data[4] | 1 号舵机电位值的高字节 | encoder_1_high |
Data[5] | 1 号舵机电位值的低字节 | encoder_1_low |
Data[6] | 2 号舵机电位值的高字节 | encoder_2_high |
Data[7] | 2 号舵机电位值的低字节 | encoder_2_low |
Data[8] | 3 号舵机电位值的高字节 | encoder_3_high |
Data[9] | 3 号舵机电位值的低字节 | encoder_3_low |
Data[10] | 4 号舵机电位值的高字节 | encoder_4_high |
Data[11] | 4 号舵机电位值的低字节 | encoder_4_low |
Data[12] | 5 号舵机电位值的高字节 | encoder_5_high |
Data[13] | 5 号舵机电位值的低字节 | encoder_5_low |
Data[14] | 6 号舵机电位值的高字节 | encoder_6_high |
Data[15] | 6 号舵机电位值的低字节 | encoder_6_low |
Data[16] | 5 号舵机的高字节 | encoder_7_high |
Data[17] | 5 号舵机的低字节 | encoder_7_low |
Data[18] | 6 号舵机的高字节 | encoder_8_high |
Data[19] | 6 号舵机的低字节 | encoder_8_low |
Data[20] | 结束帧 | 0XFA |
示例:
假设当前机械臂各关节都处于 0 位
串口返回值: FE FE 12 3D 08 00 08 00 08 00 08 00 08 00 08 00 FA
如何计算电位值
电位值 = 电位值低位 + 电位值高位 * 256
读取速度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0XE1 |
Data[4] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 02 E1 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 命令帧 | 0XE1 |
Data[4] | specified speed | Sp |
Data[5] | 结束帧 | 0XFA |
示例:
假设速度为 50
port 返回值: FE FE 03 E1 32 FA
读取所有关节的最小角度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0X4A |
Data[4] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 02 4A FA
joint_no 取值范围:1-7
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X0A |
Data[3] | 返回值: 命令帧 | 0X4A |
Data[4] | 关节1角度值高位 | Angle_high |
Data[5] | 关节1角度值低位 | Angle_low |
Data[6] | 关节2角度值高位 | Angle_high |
Data[7] | 关节2角度值低位 | Angle_low |
Data[8] | 关节3角度值高位 | Angle_high |
Data[9] | 关节3角度值低位 | Angle_low |
Data[10] | 关节4角度值高位 | Angle_high |
Data[11] | 关节4角度值低位 | Angle_low |
Data[12] | 关节5角度值高位 | Angle_high |
Data[13] | 关节5角度值低位 | Angle_low |
Data[14] | 关节6角度值高位 | Angle_high |
Data[15] | 关节6角度值低位 | Angle_low |
Data[16] | 关节7角度值高位 | Angle_high |
Data[17] | 关节7角度值低位 | Angle_low |
Data[18] | 结束帧 | 0XFA |
示例:
port 返回值: FE FE 0A 4A F9 F2 F9 F2 F9 F2 F9 F2 F9 F2 F9 F2 F9 F2 FA
如何得出关节最小角度
temp = angle1_low+angle1_high*256
Angle1=(temp \ 33000 ?(temp – 65536) : temp)/10
计算方式:角度值低位 + 角度高位值乘以 256 先判断是否大于 33000 如果大于 33000 就再减去 65536 最后除以 10 如果小于 33000 就直接除以 10
读取所有关节的最大角度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0X4B |
Data[4] | 结束帧 | 0XFA |
joint_no 取值范围:1-7
示例:
串口传输: FE FE 02 4B FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X0A |
Data[3] | 返回值: 命令帧 | 0X4B |
Data[4] | 关节1角度值高位 | Angle_high |
Data[5] | 关节1角度值低位 | Angle_low |
Data[6] | 关节2角度值高位 | Angle_high |
Data[7] | 关节2角度值低位 | Angle_low |
Data[8] | 关节3角度值高位 | Angle_high |
Data[9] | 关节3角度值低位 | Angle_low |
Data[10] | 关节4角度值高位 | Angle_high |
Data[11] | 关节4角度值低位 | Angle_low |
Data[12] | 关节5角度值高位 | Angle_high |
Data[13] | 关节5角度值低位 | Angle_low |
Data[14] | 关节6角度值高位 | Angle_high |
Data[15] | 关节6角度值低位 | Angle_low |
Data[16] | 关节7角度值高位 | Angle_high |
Data[17] | 关节7角度值低位 | Angle_low |
Data[18] | 结束帧 | 0XFA |
示例:
port 返回值: FE FE 0A 4B F9 F2 F9 F2 F9 F2 F9 F2 F9 F2 F9 F2 F9 F2 FA
如何得出关节最大角度
temp = angle1_low+angle1_high*256
Angle1=(temp \ 33000 ?(temp – 65536) : temp)/10
计算方式:角度值低位 + 角度高位值乘以 256 先判断是否大于 33000 如果大于 33000 就再减去 65536 最后除以 10 如果小于 33000 就直接除以 10
设置关节最大角度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X05 |
Data[3] | 命令帧 | 0X4D |
Data[4] | 关节舵机序号 | Joint_number |
Data[5] | highbyte of steering gear | Angle_high |
Data[6] | lowbyte of steering gear | Angle_low |
Data[7] | 结束帧 | 0XFA |
示例:
设置 2 号关节最大角度为 45
joint_no 取值范围:1-7
port 返回值: FE FE 03 41 32 FA
angle1_high:数据类型 byte
计算方式:舵机角度值乘以 100 先转换成 int 形式 再取十六进制的高字节
angle1_low:数据类型 byte
计算方式:舵机角度值乘以 100 先转换成 int 形式 再取十六进制的低字节
串口传输: FE FE 05 4C 02 11 94 FA
无返回值
查看舵机是否全部上电
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0X51 |
Data[5] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 02 51 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X03 |
Data[3] | 返回值: 命令帧 | 0X51 |
Data[4] | power on/off | 0X01/0X00 |
Data[5] | 结束帧 | 0XFA |
示例:
全部舵机已上电
串口返回值: FE FE 03 51 01 FA
获取所有伺服电机的温度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0XE5 |
Data[5] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 02 E5 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X0A |
Data[3] | 返回值: 命令帧 | 0XE5 |
Data[4] | 电机1温度 | servo1_temp |
Data[5] | 电机2温度 | servo2_temp |
Data[6] | 电机3温度 | servo3_temp |
Data[7] | 电机4温度 | servo4_temp |
Data[8] | 电机5温度 | servo5_temp |
Data[9] | 电机6温度 | servo6_temp |
Data[10] | 电机7温度 | servo7_temp |
Data[11] | 电机8温度 | servo8_temp |
Data[12] | 结束帧 | 0XFA |
示例:
串口返回值: FE FE 0A E5 14 14 14 14 14 14 14 14 FA
获取所有伺服电机的电压
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0XE3 |
Data[5] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 02 E3 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X0A |
Data[3] | 返回值: 命令帧 | 0XE3 |
Data[4] | 电机1电压 | servo1_vol |
Data[5] | 电机2电压 | servo2_vol |
Data[6] | 电机3电压 | servo3_vol |
Data[7] | 电机4电压 | servo4_vol |
Data[8] | 电机5电压 | servo5_vol |
Data[9] | 电机6电压 | servo6_vol |
Data[10] | 电机7电压 | servo7_vol |
Data[11] | 电机8电压 | servo8_vol |
Data[12] | 结束帧 | 0XFA |
示例:
串口返回值: FE FE 0A E5 00 00 00 00 00 00 00 00 FA
获取所有伺服电机的电流
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0XE2 |
Data[5] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 02 E2 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X12 |
Data[3] | 返回值: 命令帧 | 0XE2 |
Data[4] | 电机1温度 | servo1_current_high |
Data[5] | 电机1温度 | servo1_current_low |
Data[6] | 电机2温度 | servo2_current_high |
Data[7] | 电机2温度 | servo2_current_low |
Data[8] | 电机3温度 | servo3_current_high |
Data[9] | 电机3温度 | servo3_current_low |
Data[10] | 电机4温度 | servo4_current_high |
Data[11] | 电机4温度 | servo4_current_low |
Data[12] | 电机5温度 | servo5_current_high |
Data[13] | 电机5温度 | servo5_current_low |
Data[14] | 电机6温度 | servo6_current_high |
Data[15] | 电机6温度 | servo6_current_low |
Data[16] | 电机7温度 | servo7_current_high |
Data[17] | 电机7温度 | servo7_current_low |
Data[18] | 电机8温度 | servo8_current_high |
Data[19] | 电机8温度 | servo8_current_low |
Data[20] | 结束帧 | 0XFA |
示例:
串口返回值: FE FE 12 E2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FA
获取所有伺服电机的所有状态
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0XE4 |
Data[5] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 02 E3 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X0A |
Data[3] | 返回值: 命令帧 | 0XE4 |
Data[4] | 电机1电压 | servo1_status |
Data[5] | 电机2电压 | servo2_status |
Data[6] | 电机3电压 | servo3_status |
Data[7] | 电机4电压 | servo4_status |
Data[8] | 电机5电压 | servo5_status |
Data[9] | 电机6电压 | servo6_status |
Data[10] | 电机7电压 | servo7_status |
Data[11] | 电机8电压 | servo8_status |
Data[12] | 结束帧 | 0XFA |
示例:
串口返回值: FE FE 0A E4 00 00 00 00 00 00 00 00 FA
获取所有伺服电机保护电流
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0XE6 |
Data[5] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 02 E6 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X12 |
Data[3] | 返回值: 命令帧 | 0XE6 |
Data[4] | 电机1温度 | servo1_protect_current_high |
Data[5] | 电机1温度 | servo1_protect_current_low |
Data[6] | 电机2温度 | servo2_protect_current_high |
Data[7] | 电机2温度 | servo2_protect_current_low |
Data[8] | 电机3温度 | servo3_protect_current_high |
Data[9] | 电机3温度 | servo3_protect_current_low |
Data[10] | 电机4温度 | servo4_protect_current_high |
Data[11] | 电机4温度 | servo4_protect_current_low |
Data[12] | 电机5温度 | servo5_protect_current_high |
Data[13] | 电机5温度 | servo5_protect_current_low |
Data[14] | 电机6温度 | servo6_protect_current_high |
Data[15] | 电机6温度 | servo6_protect_current_low |
Data[16] | 电机7温度 | servo7_protect_current_high |
Data[17] | 电机7温度 | servo7_protect_current_low |
Data[18] | 电机8温度 | servo8_protect_current_high |
Data[19] | 电机8温度 | servo8_protect_current_low |
Data[20] | 结束帧 | 0XFA |
示例:
串口返回值: FE FE 12 E6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FA
设置电机使能
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 命令帧 | 0X13 |
Data[4] | 舵机序号 | servo_no |
Data[6] | 使能/掉使能 | 0X01/0X00 |
Data[6] | 结束帧 | 0XFA |
示例:
使能一号舵机
串口传输: FE FE 04 13 01 01 FA
servo_no 取值范围:1-8
无返回值
设置舵机零点
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 命令帧 | 0X54 |
Data[4] | 关节舵机序号 | servo_no |
Data[5] | 结束帧 | 0XFA |
示例:
设置 1 号舵机的零位
串口传输: FE FE 03 54 01 FA
servo_no 取值范围:1-8
无返回值
设置指定伺服电机的位置环P比例系数
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 命令帧 | 0X70 |
Data[4] | 舵机序号 | servo_no |
Data[5] | 舵机序号 | data |
Data[6] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 04 70 01 01 FA
servo_no 取值范围:1-8
无返回值
设置指定伺服电机的位置环D比例系数
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 命令帧 | 0X71 |
Data[4] | 舵机序号 | servo_no |
Data[5] | 舵机序号 | data |
Data[6] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 04 71 01 01 FA
servo_no 取值范围:1-8
无返回值
设置指定伺服电机的位置环I比例系数
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 命令帧 | 0X72 |
Data[4] | 舵机序号 | servo_no |
Data[5] | 舵机序号 | data |
Data[6] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 04 72 01 01 FA
servo_no 取值范围:1-8
无返回值
读取指定伺服电机的位置环P比例系数
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 命令帧 | 0XE7 |
Data[4] | 电机序号 | servo_no |
Data[5] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 03 E7 01 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X04 |
Data[3] | 返回值: 命令帧 | 0XE7 |
Data[4] | 电机序号 | servo_no |
Data[5] | 位置环P比例系数 | P |
Data[6] | 结束帧 | 0XFA |
示例:
串口返回值: FE FE 04 E7 01 01 FA
读取指定伺服电机的位置环D比例系数
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 命令帧 | 0XE8 |
Data[4] | 电机序号 | servo_no |
Data[5] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 03 E8 01 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X04 |
Data[3] | 返回值: 命令帧 | 0XE8 |
Data[4] | 电机序号 | servo_no |
Data[5] | 位置环P比例系数 | D |
Data[6] | 结束帧 | 0XFA |
示例:
串口返回值: FE FE 04 E8 01 01 FA
读取指定伺服电机的位置环I比例系数
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 命令帧 | 0XE9 |
Data[4] | 电机序号 | servo_no |
Data[5] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 03 E9 01 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X04 |
Data[3] | 返回值: 命令帧 | 0XE7 |
Data[4] | 电机序号 | servo_no |
Data[5] | 位置环P比例系数 | I |
Data[6] | 结束帧 | 0XFA |
示例:
串口返回值: FE FE 04 E9 01 01 FA
设置指定伺服电机的编码器顺时针不灵敏区
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 命令帧 | 0X73 |
Data[4] | 舵机序号 | servo_no |
Data[5] | 顺时针不灵敏区值 | data |
Data[6] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 04 73 01 01 FA
servo_no 取值范围:1-8 data 取值范围:0-32
无返回值
读取指定伺服电机的编码器顺时针不灵敏区
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 命令帧 | 0XEA |
Data[4] | 电机序号 | servo_no |
Data[5] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 03 E7 01 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X04 |
Data[3] | 返回值: 命令帧 | 0XEA |
Data[4] | 电机序号 | servo_no |
Data[5] | 顺时针不灵敏区值 | data |
Data[6] | 结束帧 | 0XFA |
示例:
串口返回值: FE FE 04 EA 01 01 FA
设置指定伺服电机的编码器逆时针不灵敏区
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 命令帧 | 0X74 |
Data[4] | 舵机序号 | servo_no |
Data[5] | 逆时针不灵敏区值 | data |
Data[6] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 04 74 01 01 FA
servo_no 取值范围:1-8 data 取值范围:0-32
无返回值
读取指定伺服电机的编码器逆时针不灵敏区
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 命令帧 | 0XEB |
Data[4] | 电机序号 | servo_no |
Data[5] | 结束帧 | 0XFA |
示例:
串口传输: FE FE 03 EB 01 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X04 |
Data[3] | 返回值: 命令帧 | 0XEB |
Data[4] | 电机序号 | servo_no |
Data[5] | 逆时针不灵敏区值 | data |
Data[6] | 结束帧 | 0XFA |
示例:
串口返回值: FE FE 04 EB 01 01 FA
读取舵机参数
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X05 |
Data[3] | 命令帧 | 0X53 |
Data[4] | 关节舵机序号 | Joint_number |
Data[5] | 数据地址 | data_id |
Data[5] | 读取长度 | data_len |
Data[6] | 结束帧 | 0XFA |
示例:
读取 1 号舵机位置 P 比例参数
串口传输: FE FE 03 53 01 15 02 FA
joint_no 取值范围:1-8
data_len :1/2 1字节/2字节
Data_id: 数据类型 byte,取值如下表
地址 | 功能 | 取值范围 | 初始值 | 取值解析 |
---|---|---|---|---|
20 | LED 报警 | 0-254 | 0 | 1/0:打开/关闭 LED 警报器 |
21 | 位置环 P | 0-254 | 10 | 控制电机的比例系数 |
22 | 位置环 I | 0-254 | 0 | 控制电机的微分系数 |
23 | 位置环 D | 0-254 | 1 | 控制电机的积分系数 |
24 | 最小启动力 | 0-1000 | 0 | 设置最小输出力矩 1000 = 100% |
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X03 |
Data[3] | 返回值: 命令帧 | 0X53 |
Data[5] | 数据地址 | data_id |
Data[5] | 返回值: data | data_high |
Data[4] | 返回值: data | data_low |
Data[5] | 结束帧 | 0XFA |
设置舵机伺服参数
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X05 |
Data[3] | 命令帧 | 0X52 |
Data[4] | 关节舵机序号 | Joint_no |
Data[5] | 数据地址 | data_id |
Data[5] | 数据高位 | data_high |
Data[5] | 数据低位 | data_low |
Data[6] | 结束帧 | 0XFA |
示例:
设置 1 号舵机位置 P 比例参数为 1
串口传输: FE FE 05 52 01 15 00 01 FA
joint_no 取值范围:1-8
无返回值
Data_id:数据类型 byte,具体值见下图:
地址 | 功能 | 取值范围 | 初始值 | 取值解析 |
---|---|---|---|---|
20 | LED 报警 | 0-254 | 0 | 1/0:打开/关闭 LED 警报器 |
21 | 位置环 P | 0-254 | 10 | 控制电机的比例系数 |
22 | 位置环 I | 0-254 | 0 | 控制电机的微分系数 |
23 | 位置环 D | 0-254 | 1 | 控制电机的积分系数 |
24 | 最小启动力 | 0-1000 | 0 | 设置最小输出力矩 1000 = 100% |
设置 Atom 模式
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 命令帧 | 0X60 |
Data[4] | 引脚序号 | pin_no |
Data[5] | 输入/输出 | 00X00/00X01 |
Data[6] | 结束帧 | 0XFA |
示例:
设置 atom pin22 为输入模式
串口传输: FE FE 04 60 16 00 FA
Pin_no: 数据类型 byte
Pin_mode:0/1
无返回值
设置 Atom IO(setDigitalOutput)
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 命令帧 | 0X61 |
Data[4] | 引脚序号 | pin_no |
Data[5] | 电平信号 | 0X00/0X01 |
Data[6] | 结束帧 | 0XFA |
示例:
设置引脚 P2 为高电平
串口传输: FE FE 04 61 02 01 FA
pin_no:1/2
无返回值
读取 Atom IO(getDigitalInput)
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 命令帧 | 0X62 |
Data[4] | 引脚序号 | pin_no |
Data[5] | 结束帧 | 0XFA |
示例:
读取引脚 P2 的电平信号
串口传输: FE FE 03 62 02 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X03 |
Data[3] | 返回值: 命令帧 | 0X53 |
Data[4] | 引脚序号 | pin_no |
Data[5] | 电平信号 | 0X00/0X01 |
Data[6] | 结束帧 | 0XFA |
示例:
假设引脚 P2 为高电平
Port 返回值: FE FE 04 62 02 01 FA
设置主控 IO 输出
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 命令帧 | 0X65 |
Data[4] | 引脚序号 | Pin_no |
Data[5] | 电平信号 | 0X00/0X01 |
Data[4] | 结束帧 | 0XFA |
示例:
设置引脚 2 输出高电平
串口传输: FE FE 04 65 02 01 FA
读取主控 IO 输出
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 命令帧 | 0X66 |
Data[4] | 引脚序号 | Pin_no |
Data[4] | 结束帧 | 0XFA |
串口传输: FE FE 03 66 02 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X04 |
Data[3] | 返回值: 命令帧 | 0X66 |
Data[4] | 引脚序号 | Pin_no |
Data[5] | 电平信号 | 0X00/0X01 |
Data[6] | 结束帧 | 0XFA |
示例:
假设引脚 2 为高电平
Port 返回值: FE FE 04 66 02 01 FA
设定 atom 屏幕 RGB 灯的颜色
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X05 |
Data[3] | 命令帧 | 0X6A |
Data[4] | R | 0X00/0XFF |
Data[5] | G | 0X00/0XFF |
Data[6] | B | 0X00/0XFF |
Data[7] | 结束帧 | 0XFA |
示例:
设置 RGB 为蓝色
串口传输: FE FE 05 6A 00 00 FF FA
无返回值
读取末端led按下状态
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 命令帧 | 0X6B |
Data[4] | 结束帧 | 0XFA |
串口传输: FE FE 02 6B FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X03 |
Data[3] | 返回值: 命令帧 | 0X6B |
Data[5] | 按下/未按下 | 0X00/0X01 |
Data[6] | 结束帧 | 0XFA |
设置底座 IO 输出
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 命令帧 | 0Xa0 |
Data[4] | 引脚序号 | Pin_no |
Data[5] | 电平信号 | 0X00/0X01 |
Data[4] | 结束帧 | 0XFA |
示例:
设置引脚 2 输出高电平
串口传输: FE FE 04 a0 02 01 FA
读取底座 IO 输出
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 命令帧 | 0Xa1 |
Data[4] | 引脚序号 | Pin_no |
Data[4] | 结束帧 | 0XFA |
串口传输: FE FE 03 a1 02 FA
返回值: 数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回值: 识别帧 | 0XFE |
Data[1] | 返回值: 识别帧 | 0XFE |
Data[2] | 返回值: 数据长度帧 | 0X04 |
Data[3] | 返回值: 命令帧 | 0Xa1 |
Data[4] | 引脚序号 | Pin_no |
Data[5] | 电平信号 | 0X00/0X01 |
Data[6] | 结束帧 | 0XFA |
示例:
假设引脚 2 为高电平
Port 返回值: FE FE 04 a1 02 01 FA