(5)按钮输入

embedded/2024/10/18 5:42:16/

文章目录

前言

1 基础设置

2 数字逻辑/模拟电压设置

3 PWM输入设置

4 额外设置


前言

连接到自动驾驶仪的最多四个外部按钮或开关可以被配置为触发辅助功能(Auxiliary Functions),类似于 RC 通道开关的触发方式。这些按钮输入可以被配置为使用数字逻辑电平电压输入(拉到地或拉到高)或 PWM 信号输入。


Note

一些辅助功能(auxiliary function)有一个中间位置(如"降落伞3位置开关"),但中间位置不能由按钮触发。

1 基础设置

为了使用按钮,自动驾驶仪的引脚必须被配置为 GPIO。许多自动驾驶仪有专门的引脚,但有些没有。在这些情况下,必须将普通的 SERVO/MOTOR 输出配置为 GPIO 引脚,而不是自动驾驶仪输出功能(Autopilot Output Functions)。

对于带有 IOMCU自动驾驶仪(如 PixhawkCubeOrange),外部按钮或开关应连接到自动驾驶仪AUX 输出(而不是 MAIN 输出)。为了便于配置和避免定时器冲突,最好在高端使用辅助输出(如 AUX5AUX6),远离用于电机和伺服的输出。对于没有 IOMCU自动驾驶仪(如pixelracer 等),可以使用正常的 SERVO/MOTOR 输出。

  • 设置BTN_ENABLE = 1(启用)并刷新参数;
  • 如果使用 4.2(或更高版本),设置 SERVOx_FUNCTION = -1GPIO),其中"x"是连接到按钮的伺服输出通道。例如,如果带 IOMCU自动驾驶仪上的 AUX6 输出要作为 GPIO 使用,SERVO14_FUNCTION = -1
  • 如果在带有 IOMCU自动驾驶仪上(如 PixhawkCubeOrange)使用 4.1(或更早),将BRD_PWM_COUNT 设置得足够低,以便所需的伺服和所有其他更高的输出可用于GPIO输入。例如,BRD_PWM_COUNT = 4意味着只有AUX输出56可以用作GPIOBRD_PWM_COUNT = 意味着 AUX 输出 16 可以被使用。对于不使用 IOMCU 的板子,BRD_PWM_COUNT小于总输出数,将把那些较高的输出配置为 GPIO

2 数字逻辑/模拟电压设置

数字逻辑电平的模拟电压可用于按钮输入。下面列出的参数变化是针对第 1 个按钮的,但第 2、第和第 4 个按钮也可以进行类似的设置,只需将参数名称中的"1"改为"2"、"3"或"4"。为了确定哪个GPIO 针脚对应于哪个自动驾驶仪SERVO/MOTOR 输出针脚或专用 GPIO 针脚,必须查阅自动驾驶仪hwdef.dat 文件。如何确定,见GPIOs

  • 将 BTN_PIN1 设置为连接到按钮/开关的 GPIO 的编号(例如,"55"="AUXOUT6");
  • 设置 BTN_OPTIONS1 = 0(在比特掩码中没有设置位),在高逻辑电平电压(> 2.4V)上触发,并被辅助功能解释为""位。设置位 1PWM 输入)可以检测高于或低于 1800/1200usPWM,而不是逻辑电平。如果没有检测到 PWM 或小于 800us 或大于 2200us,按钮将被解释为低电平。设置位 2(反相)将高电平状态改变为引脚上的逻辑低电压,或者低于1200us,如果 PWM 输入;
  • 将 BTN_FUNC1 设置为要触发的辅助功能(Auxiliary Function)。如果设置为 0,则不触发任何功能。

该引脚被自动配置为内部上拉,这意味着按钮或开关只需要将电压拉低。

Warning

一些自动驾驶仪在启动时将引脚拉高或拉低,这可能导致辅助功能在启动后不久就被触发。

3 PWM输入设置

PWM 信号可以作为按钮输入。PWM 值> 1800us 或 < 1200us 可用于触发辅助功能。下面列出的参数变化是针对第 1 个按钮的,但第 2、第 3 和第 4 个按钮也可以进行类似的设置。如上所述,要确定哪个 GPIO 引脚与哪个自动驾驶仪SERVO/MOTOR 输出引脚或专用 GPIO 引脚相对应,必须查阅自动驾驶仪hwdef.dat 文件。如何确定,见GPIOs

  • 将 BTN_PIN1 设置为连接到按钮/开关的 GPIO 的编号(例如,"55"="AUXOUT6");
  • 将 BTN_OPTIONS1 = 设为"1",以便被辅助功能解释为 PWM > 1800us 的""位;
  • 将 BTN_OPTIONS1 = 设为"3",在 PWM < 1200us 或缺少信号输入的情况下,辅助功能将被解释为"高"位。PWM > 1800us 将被解释为"LOW"位置;
  • 将 BTN_FUNC1 设置为要触发的辅助功能(Auxiliary Function)。如果设置为 0,则不触发任何功能。

Note

有效的 PWM 输入范围是 800us2200us。如果 PWM 值超出这个范围,或者缺失,则相当于应用 < 1200us。通常这意味着除非设置了 BTN_OPTIONSx 的反转选项,否则辅助功能不会被触发。

4 额外设置

BTN_REPORT_SEND 设置了每次按钮状态改变时向地面控制站发送 BUTTON_CHANGE mavlink2 消息的时间长度。在写这篇文章的时候,我们还不知道有任何 GCS 在使用这个消息。


http://www.ppmy.cn/embedded/48602.html

相关文章

【复旦邱锡鹏教授《神经网络与深度学习公开课》笔记】感知器

感知器是一种非常早期的线性分类模型&#xff0c;作为一种简单的神经网络模型被提出。感知器是一种模拟生物神经元行为的机器&#xff0c;有与生物神经元相对应的部件&#xff0c;如权重&#xff08;突触&#xff09;、偏置&#xff08;阈值&#xff09;及激活函数&#xff08;…

【CS.AI】AI引领编程新时代:深度探索GitHub Copilot

文章目录 引言0. TOP TAKEAWAYS 重要要点1. Copilot的基本功能2. 技术原理3. 优势与局限优势局限 4. 使用体验4.1 初次使用4.2 在 JetBrains 全家桶中使用 GitHub Copilot1. 安装插件2. 配置插件3. 使用 GitHub Copilot 4.3 日常开发4.4 体验与反馈 5. 对开发者生态系统的影响5…

如何看待有企业使用AI写代码,6个月研发提效超20%,未来AI对程序员会有多大影响?

AIGC对程序员来说&#xff0c;有远虑&#xff0c;无近忧。 目前看来&#xff0c;AI是程序员编写代码很好的助手&#xff0c;尤其在代码补全、照样子写代码、生成注释及文档等方面效果非常好&#xff0c;还有能省去很多查api的时间。 但即便如此&#xff0c;它也仅仅能解决造轮子…

如何舒适的使用VScode

安装好VScode后通常会很不好用&#xff0c;以下配置可以让你的VScode变得好用许多。 VScode的配置流程 1、设置VScode中文2、下载C/C拓展&#xff0c;使代码可以跳转3、更改编码格式4、设置滚轮缩放5、设置字体6、设置保存自动改变格式7、vscode设置快捷代码8、下载插件并学会…

WinForm基础控件使用演示

目录 一 控件列表 二 样例效果 三 后台代码 一 控件列表 二 样例效果 三 后台代码 using System.Diagnostics; using System.Drawing.Printing; using System.Text;namespace WinForm练习 {public partial class Form1 : Form{public Form1(){InitializeComponent();}priva…

最小生成树prim算法详解

prim算法解决的是最小生成树问题&#xff0c;即在一个给定的无向图G中求一棵生成树T&#xff0c;使得这棵树拥有图G中的所有顶点&#xff0c;且所有边都是来自图G中的边&#xff0c;并且满足整棵树的边权之和最小。 prim算法的基本思想是对图G设置集合S来存放已被访问的顶点&a…

力扣刷题总结 -- 数组26

76. 所有奇数长度子数组的和&#xff08;简单&#xff09; 题目要求&#xff1a; 给定一个正整数数组 arr &#xff0c;计算所有奇数长度子数组的和。 子数组定义为原数组中的一个连续子序列。 返回 arr 中 所有奇数长度子数组的和 。 题目分析&#xff1a; 先得到所有子…

k-means聚类模型的优缺点

一、k-means聚类模型的优点 1. 简单高效&#xff1a;k-means算法思想简单直观&#xff0c;易于实现。它通过迭代计算样本点与聚类中心之间的距离&#xff0c;并不断调整聚类中心的位置&#xff0c;直至满足终止条件。由于其计算过程相对直接&#xff0c;所以具有较高的执行效率…