舵机
简介
舵机模块支持由PWM(脉宽调制)信号控制的舵机,如常见的 SG90、MG90S、MG996R 等。每个舵机由一个PWM通道控制。Node-MQ支持同时驱动8个独立舵机(8个PWM通道)。

接口:PWM
指令
- 模块名称:
- servo
config
config指令使用模块配置的 标准模板。
舵机使用的PWM信号由基础指令配置,要求所配置的PWM频率在50~400 Hz范围内。参考 PWM配置。
参数说明
- device
[array] (!)设备配置对象数组。- name
[string] (?)用户定义的设备名。最大长度15个字符。当模块只有单一设备时可以省略。 - remove
[bool] (?)为true时,释放并移除设备。模块有多个设备时,通过 name 指定。默认false。 - io_num
[int] (!)已配置的PWM输出引脚的GPIO序号。 - max_angle
[int] (?)舵机的最大转角,默认值180。 - min_us
[int] (?)舵机PWM信号的最小脉宽值,单位微秒。对应0度转角。默认值500。 - max_us
[int] (?)舵机PWM信号的最大脉宽值,单位微秒。对应最大转角。默认值2500。
- name
样例
json
[
{
"action": "config",
"pwm": {
"freq_hz": 100,
"io_num": [6, 7]
}
},
{
"module": "servo",
"action": "config",
"device": [
{
"name": "left",
"io_num": 6,
"max_angle": 120
},
{
"name": "right",
"io_num": 7,
"max_angle": 120
}
]
}
]
- 样例使用指令数组形式,先配置PWM输出引脚(GPIO6、GPIO7),再配置对应的舵机。
- 两个舵机由设备名
left、right区分。
set_angle
set_angle设置舵机转角。
参数说明
- data
[array] (!)控制数据对象数组。- device
[string] (?)要操作的设备名。当模块只有单一设备时可以省略。 - value
[float] (!)要设置的角度值。
- device
样例
json
{
"module": "servo",
"action": "set_angle",
"data": [
{
"device": "left",
"value": 60
},
{
"device": "right",
"value": 90
}
]
}get_angle
get_angle读取舵机转角。
该指令读取的是由PWM引脚当前脉宽值换算的转角值,而非舵机的物理转角值。
参数说明
- device
[array] (?)要读取的设备名数组。当模块只有单一设备时可以省略。
样例
json
{
"module": "servo",
"action": "get_angle",
"device": [ "left", "right"]
}应答
type-angle 返回读取的舵机转角数据。
json
{
"module": "servo",
"type": "angle",
"data": [
{
"device": "left",
"value": 66.3
},
{
"device": "right",
"value": 55.6
}
]
}
type- 数据类型angle(舵机转角数据)。data- 转角数据对象数组。
device- 设备名。配置不指定时为空字符串。value- 转角值(保留一位小数)。