(5)按钮输入
文章目录
前言
1 基础设置
2 数字逻辑/模拟电压设置
3 PWM输入设置
4 额外设置
前言
连接到自动驾驶仪的最多四个外部按钮或开关可以被配置为触发辅助功能(Auxiliary Functions),类似于 RC 通道开关的触发方式。这些按钮输入可以被配置为使用数字逻辑电平电压输入(拉到地或拉到高)或 PWM 信号输入。
!Note
一些辅助功能(auxiliary function)有一个中间位置(如"降落伞3位置开关"),但中间位置不能由按钮触发。
1 基础设置
为了使用按钮,自动驾驶仪的引脚必须被配置为 GPIO。许多自动驾驶仪有专门的引脚,但有些没有。在这些情况下,必须将普通的 SERVO/MOTOR 输出配置为 GPIO 引脚,而不是自动驾驶仪输出功能(Autopilot Output Functions)。
对于带有 IOMCU 的自动驾驶仪(如 Pixhawk、CubeOrange),外部按钮或开关应连接到自动驾驶仪的 AUX 输出(而不是 MAIN 输出)。为了便于配置和避免定时器冲突,最好在高端使用辅助输出(如 AUX5 或 AUX6),远离用于电机和伺服的输出。对于没有 IOMCU 的自动驾驶仪(如pixelracer 等),可以使用正常的 SERVO/MOTOR 输出。
- 设置BTN_ENABLE = 1(启用)并刷新参数;
- 如果使用 4.2(或更高版本),设置 SERVOx_FUNCTION = -1(GPIO),其中"x"是连接到按钮的伺服输出通道。例如,如果带 IOMCU 的自动驾驶仪上的 AUX6 输出要作为 GPIO 使用,SERVO14_FUNCTION = -1;
- 如果在带有 IOMCU 的自动驾驶仪上(如 Pixhawk、CubeOrange)使用 4.1(或更早),将BRD_PWM_COUNT 设置得足够低,以便所需的伺服和所有其他更高的输出可用于GPIO输入。例如,BRD_PWM_COUNT = 4意味着只有AUX输出5和6可以用作GPIO,BRD_PWM_COUNT = 0 意味着 AUX 输出 1 到 6 可以被使用。对于不使用 IOMCU 的板子,BRD_PWM_COUNT小于总输出数,将把那些较高的输出配置为 GPIO。
2 数字逻辑/模拟电压设置
数字逻辑电平的模拟电压可用于按钮输入。下面列出的参数变化是针对第 1 个按钮的,但第 2、第3 和第 4 个按钮也可以进行类似的设置,只需将参数名称中的"1"改为"2"、"3"或"4"。为了确定哪个GPIO 针脚对应于哪个自动驾驶仪的 SERVO/MOTOR 输出针脚或专用 GPIO 针脚,必须查阅自动驾驶仪的 hwdef.dat 文件。如何确定,见GPIOs。
- 将 BTN_PIN1 设置为连接到按钮/开关的 GPIO 的编号(例如,"55"="AUXOUT6");
- 设置 BTN_OPTIONS1 = 0(在比特掩码中没有设置位),在高逻辑电平电压(> 2.4V)上触发,并被辅助功能解释为"高"位。设置位 1(PWM 输入)可以检测高于或低于 1800/1200us的 PWM,而不是逻辑电平。如果没有检测到 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 输入范围是 800us 到 2200us。如果 PWM 值超出这个范围,或者缺失,则相当于应用 < 1200us。通常这意味着除非设置了 BTN_OPTIONSx 的反转选项,否则辅助功能不会被触发。
4 额外设置
BTN_REPORT_SEND 设置了每次按钮状态改变时向地面控制站发送 BUTTON_CHANGE mavlink2 消息的时间长度。在写这篇文章的时候,我们还不知道有任何 GCS 在使用这个消息。
相关文章:
(5)按钮输入
文章目录 前言 1 基础设置 2 数字逻辑/模拟电压设置 3 PWM输入设置 4 额外设置 前言 连接到自动驾驶仪的最多四个外部按钮或开关可以被配置为触发辅助功能(Auxiliary Functions),类似于 RC 通道开关的触发方式。这些按钮输入可以被配置为使用数字逻辑电平电压…...
嵌入式开发、C++后台开发、C++音视频开发怎么选择?
开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 嵌入式开发:非常…...
高考志愿填报,大学读什么专业比较好?
高考分数出炉后,选择什么样的专业,如何去选择专业?于毕业生而言是一个难题。因为,就读的专业前景不好,意味着就业情况不乐观,意味着毕业就是失业。 盲目选择专业的确会让自己就业时受挫,也因此…...
33 _ 跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性?
通过上篇文章的介绍,我们知道了同源策略可以隔离各个站点之间的DOM交互、页面数据和网络通信,虽然严格的同源策略会带来更多的安全,但是也束缚了Web。这就需要在安全和自由之间找到一个平衡点,所以我们默认页面中可以引用任意第三…...
C++入门小结
C命名空间总结 C 中的命名空间(Namespace)是一种组织代码的方式,用于避免全局命名冲突。在同一个命名空间中,可以有相同名称的变量、函数和类,但它们彼此互不影响。下面是对 C 命名空间的一些总结: 定义命…...
Java 开发实例:Spring Boot+AOP+注解+Redis防重复提交(防抖)
文章目录 1. 环境准备2. 引入依赖3. 配置Redis4. 创建防重复提交注解5. 实现AOP切面6. 创建示例Controller7. 测试8. 进一步优化8.1 自定义异常处理8.2 提升Redis的健壮性 9. 总结 🎉欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨…...
使用difflib实现文件差异比较用html显示
1.默认方式,其中加入文本过长,需要换行,因此做 contenthtml_output.replace(</style>,table.diff td {word-wrap: break-word;white-space: pre-wrap;max-width: 100%;}</style>),添加换行操作 ps:当前te…...
【文末附gpt升级秘笈】AI热潮降温与AGI场景普及的局限性
AI热潮降温与AGI场景普及的局限性 摘要: 随着人工智能(AI)技术的迅猛发展,AI热一度席卷全球,引发了广泛的关注和讨论。然而,近期一些学者和行业专家对AI的发展前景提出了质疑,认为AI热潮将逐渐…...
Vue待学习
整个渲染过程了解 Vue实例?Vue模板?渲染函数render()?虚拟DOM VNode?模板编译器?diff算法 CSS相关 CSS高级学习?过渡? 待熟悉掌握 Vue-router?VueX?Vue-Cli、Webpack和…...
TOP150-LC88
/*给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不…...
使用Python和TCN进行时间序列预测:一个完整的实战示例
使用Python和TCN进行时间序列预测:一个完整的实战示例 时间卷积网络(TCN)已被证明在处理序列数据方面表现出色,尤其是在需要捕获长期依赖关系的任务中。在本文中,我们将通过一个简单的例子,展示如何使用Py…...
如何用R语言ggplot2画高水平期刊散点图
文章目录 前言一、数据集二、ggplot2画图1、全部代码2、细节拆分1)导包2)创建图形对象3)主题设置4)轴设置5)图例设置6)散点颜色7)保存图片 前言 一、数据集 数据下载链接见文章顶部 处理前的数据…...
Python基于 Jupyter Notebook 的图形可视化工具库之ipysigma使用详解
概要 在数据科学和网络分析中,图(Graph)结构是一种常用的数据结构,用于表示实体及其关系。为了方便图数据的可视化和交互操作,ipysigma 提供了一个基于 Jupyter Notebook 的图形可视化工具。通过 ipysigma,用户可以在 Jupyter Notebook 中创建、编辑和展示图结构,方便进…...
四叉树和KD树
1. 简介 四叉树和KD树都是用于空间数据索引和检索的树状数据结构。它们通过将空间递归地划分为更小的区域,并存储每个区域内的点,来实现快速搜索和范围查询。 2. 四叉树 2.1 定义 四叉树是一种树状数据结构,它将二维空间递归地划分为四个…...
C语言中结构体使用.与->访问成员变量的区别
文章目录 前言点运算符(.)箭头运算符(->)总结 前言 在C语言中,. 和 -> 都是用来访问结构体成员的运算符,但它们的使用场景和含义有所不同。 提示:以下是本篇文章正文内容,下面…...
计算机二级Access选择题考点
在Access中,若要使用一个字段保存多个图像、图表、文档等文件,应该设置的数据类型是附件。在“销售表"中有字段:单价、数量、折扣和金额。其中,金额单价x数量x折扣,在建表时应将字段"金额"的数据类型定义为计算。若…...
人工智能历史与现状
1 人工智能历史与现状 1.1 人工智能的概念和起源 1.1.1 人工智能的概念 人工智能 (Artificial Intelligence ,AI)是一门研究如何使计算机 能够模拟人类智能行为的科学和技术,目标在于开发能够感知、理解、 学习、推理、决策和解决问题的智能机器。人工智能的概念主要包含 以…...
【git使用一】windows下git下载、安装和卸载
目录 (1)下载安装包 (2)安装git (3)安装验证 (4)卸载git (1)下载安装包 官网下载地址:Git 国内镜像下载地址:CNPM Binaries Mir…...
JVM 类加载器的工作原理
JVM 类加载器的工作原理 类加载器(ClassLoader)是一个用于加载类文件的子系统,负责将字节码文件(.class 文件)加载到 JVM 中。Java 类加载器允许 Java 应用程序在运行时动态地加载、链接和初始化类。 2. 类加载器的工…...
ARM Cortex-M4 CPU指令大全:作用、原理与实例
引言 在计算机系统中,CPU(中央处理器)是执行各种指令的核心部件。ARM Cortex-M4是广泛应用于嵌入式系统中的一款处理器,其指令集架构(ISA)基于ARMv7-M。本文将介绍ARM Cortex-M4处理器中的常见指令&#x…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...
C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
