Skip to content

舵机 ​

简介 ​

舵机模块支持由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。

样例 ​

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] (!) 要设置的角度值。

样例 ​

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 - 转角值(保留一位小数)。