最多可将4个外部按钮或开关连接至飞控,用于触发辅助功能,其作用方式与遥控器通道开关类似。这些按钮输入可配置为数字逻辑电平输入(下拉到地或上拉至高电平)或PWM信号输入。
注意
部分辅助功能带有中间档位(如“降落伞三档开关”),但无法通过按钮触发中间档位。
基础设置
使用按钮前,需将飞控引脚配置为GPIO。多数飞控有专用GPIO引脚,若无,则需将普通SERVO/MOTOR输出引脚配置为GPIO,而非飞控输出功能。
- 带IOMCU的飞控(如零一飞控):外部按钮/开关应接AUX输出,而非MAIN输出。为简化配置、避免定时器冲突,建议使用远离电机/舵机的高位AUX口(如AUX5、AUX6)。
- 不带IOMCU的飞控:可使用普通SERVO/MOTOR输出引脚。
- 设置 BTN_ENABLE = 1(启用按钮功能),并刷新参数。
- 设置 SERVOx_FUNCTION = -1(GPIO),其中x为按钮连接的舵机输出通道。
示例:带IOMCU的飞控使用AUX6作为GPIO,需设置 SERVO14_FUNCTION = -1。
数字逻辑/模拟电压设置
按钮输入可使用数字逻辑电平模拟电压。以下为第1个按钮的参数配置,第2–4个按钮只需将参数名中的“1”替换为“2/3/4”即可。
需查阅飞控hwdef.dat文件,确定GPIO编号对应哪个SERVO/MOTOR输出引脚或专用GPIO引脚(详见GPIOs文档)。
- 设置 BTN_PIN1 为按钮/开关连接的GPIO编号(示例:55 = AUXOUT6)。
- 设置 BTN_OPTIONS1 = 0(位掩码无置位):
- 逻辑电平**>2.4V**时触发,辅助功能判定为“高电平”状态。
- 置位第1位(PWM输入):改为检测PWM>1800μs或<1200μs,而非逻辑电平。
- PWM未检测到、<800μs或>2200μs时,判定为“低电平”。
- 置位第2位(反转):将高电平状态改为引脚逻辑低电平;若为PWM输入,则改为<1200μs。
- 设置 BTN_FUNC1 为要触发的辅助功能;设为0则不触发任何功能。
引脚默认启用内部上拉,按钮/开关仅需将电平拉低即可。
警告
部分飞控启动时会拉高/拉低引脚,可能导致开机后立即触发辅助功能。
PWM输入设置
可将PWM信号作为按钮输入,PWM>1800μs或<1200μs可触发辅助功能。以下为第1个按钮配置,2–4号按钮同理。需查阅hwdef.dat确定GPIO引脚对应关系。
- 设置 BTN_PIN1 为按钮/开关连接的GPIO编号(示例:55 = AUXOUT6)。
- 设置 BTN_OPTIONS1:
- 设为1:PWM>1800μs时,辅助功能判定为“高电平”。
- 设为3:PWM<1200μs或无信号输入时判定为“高电平”;PWM>1800μs判定为“低电平”。
- 设置 BTN_FUNC1 为目标辅助功能;设为0不触发。
注意
有效PWM输入范围:800μs–2200μs。超出此范围或无信号,等效于<1200μs;通常不会触发辅助功能,除非开启BTN_OPTIONSx的反转选项。
额外设置
BTN_REPORT_SEND:每次按钮状态改变时,向地面站发送BUTTON_CHANGE MAVLink2消息的持续时长。截至本文档编写时,暂无地面站支持该消息。
参考链接:https://ardupilot.org/plane/docs/common-buttons.html