自己DIY一个模拟多按钮电路

news2024/11/18 14:29:53

普通按键电路原理:

        一般使用的按键原理图如下图所示,由按键、上拉电阻和消抖滤波电容组成。按键断开时KeyIin1处电压被上拉到+5V,当按键闭合时把KeyIin1电压拉到0V,与按键并联的电容起到滤除按键按下与弹起时的高频信号。

电路 按键 原理

如果在电路中需要使用多个按钮时,以上的电路缺点是占用单片机的多个接口,在单片机的管脚资源紧张的情况下可以使用以下的模拟按钮方案,仅仅需要占用一个模拟接口。

模拟多路共用按键

      

电路 按键 原理

       

         使用以上电路,当某个按键按下时,按键对应的电阻与R36串联构成分压电路,C12作为滤波电容,滤除干扰信号,提高ADC检测的稳定性。ADC采集R36上的电压,可以使用查表或者计算的方式得到被按下按键的序号。

        这种方案优点是只需要一个模拟管脚即可识别多个按键的动作,还可以检测多个按键同时按下的动作,对模拟的精度也没有很高的要求;缺点是不能提供中断触发信号。

        在分压电阻取值时应当注意不同按键按下时对应的电压差不能小于ADC的检测精度,否则无法识别到底是哪个按键按下。

Arduino UNO的内置ADC精度是十位,用二进制表达就是十个二进制位,总信息量就是2的10次方(2^10==1024),从0开始就是0~1023了。

        而我们需要电压值,所以做个运算把0~1023转换为0~5V。5÷1024=0.00488伏。也就是说uno板的精度可以检测到小数点后三位,这是一个精确度很高的精确度了。如果你使用的是esp32那么内置精确度是12位,也就是2^12=4098,5伏÷4098=0.00122伏,精确度就更高了。

        另外,模拟接口检测到的值并不是精确稳定的,而是会在某个电压范围内抖动,在编写程序时可以采用判断电压范围的方式来避免误判。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1112915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

让uniGUI支持https

今天在专家的帮助下,成功的让uniGUI支持https了。 首先,去申请个**的证书。我同事去阿里申请的,申请回是一个zip文件,里面有两个文件,一个扩展是per,一个key 然后,把这两个证书文件放到uniGUI…

【LeetCode】48. 旋转图像

1 问题 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8…

京东数据平台(京东数据分析)2023年9月京东冰箱行业品牌销售排行榜!

鲸参谋监测的京东平台9月份冰箱市场销售数据已出炉! 9月份,大家电行业整体下滑,而冰箱作为大家电市场中的重点品类,受行业趋势变动的影响,冰箱销售市场也同样下滑。鲸参谋数据显示,9月在京东平台上&#xf…

浏览器下载打开java文件 出现一般异常错误提示你的安全设置已阻止自签名应用程序

环境: win10专业版 谷歌浏览器 问题描述: 浏览器下载打开java文件 提示你的安全设置已阻止自签名应用程序 解决方案: 1.打开控制,面板找到java 找到安全 , 将安全级别调至“中” 2.把例外站点也添加一下 3.重启…

总结关于计算机msvcp120.dll丢失的解决方法

在计算机的使用过程中,我们可能会遇到各种各样的问题,其中之一就是“msvcp120.dll文件丢失”。这是一个非常常见的问题,可能会影响到许多软件的正常运行。本文将详细介绍6种不同的解决方法,帮助大家解决这个问题。 首先&#xff…

No valid NAT64 prefix

As an AI language model, I do not have access to your network configuration or settings. However, in general, the error message “No valid NAT64 prefix” indicates that there is a problem with the configuration of IPv6 to IPv4 translation. NAT64 is a mech…

深度剖析数据在计算机内存中的存储

本章重点 1.计算机中数据类型详细介绍 2.整形在内存中的存储方式 3.大小端字节序介绍以及判断方法 1. 数据类型详细介绍 C语言中我们学习的内置类型数据有以下几种。 类型数据类型名称占用内存空间字节char 字符数据类型 1short 短整型 2int 整形 4long 长整型 4long long …

09 创建型模式-建造者模式

1.建造者模式介绍: 建造者模式 (builder pattern), 也被称为生成器模式 , 是一种创建型设计模式 定义: 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不 同的表示。 2.建造者模式要解决的问题 建造者模式可以将部件和其组装过程分开&am…

SLAM从入门到精通(构建自己的slam包)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 我们学习了很多的开源包,比如hector、gmapping。但其实我们也可以自己编写一个slam包。这么做最大的好处,主要还是可以帮助…

【会议征稿通知】第三届大数据经济与数字化管理国际学术会议(BDEDM 2024)

2024 3rd International Conference on Big Data Economy and Digital Management 第三届大数据经济与数字化管理国际学术会议(BDEDM 2024) 第三届大数据经济与数字化管理国际学术会议(BDEDM 2024)将于2024年1月12-14日于宁波召…

分布式Trace:横跨几十个分布式组件的慢请求要如何排查?

目录 前言 一、问题的出现? 二、一体化架构中的慢请求排查如何做 三、分布式 Trace原理 四、如何来做分布式 Trace 前言 在分布式服务架构下,一个 Web 请求从网关流入,有可能会调用多个服务对请求进行处理,拿到最终结果。这个…

AGI热门方向:国内前五!AI智能体TARS-RPA-Agent落地,实在智能打造人手一个智能助理

早在 1950 年代,Alan Turing 就将「智能」的概念扩展到了人工实体,并提出了著名的图灵测试。这些人工智能实体通常被称为 —— 代理(Agent)。 代理这一概念起源于哲学,描述了一种拥有欲望、信念、意图以及采取行动能力…

SystemVerilog Assertions应用指南 Chapter1.33 在蕴含中使用 if/else

SVA允许在使用蕴含的属性的后续算子中使用“if/else”语句。 属性 p_if_else检査如果信号“ start”的下降沿被检测到,就是个有效开始,接着一个时钟周期后,信号“a”或者信号“b”为高。在现行算子成功匹配时,后续算子有两个可能的路径。 1.如果信号“a”为高,…

javaEE - 2(11000字详解多线程)

一:多线程带来的的风险-线程安全 线程安全的概念:如果多线程环境下代码运行的结果是符合我们预期的,即在单线程环境应该的结果,则说这个程序是线程安全的。 当多个线程同时访问共享资源时,就会产生线程安全的风险&am…

PHP的学习入门建议

学习入门PHP的步骤如下: 确定学习PHP的目的和需求,例如是为了开发网站还是为了与数据库交互等。学习PHP的基础语法和程序结构,包括变量、数据类型、循环、条件等。学习PHP的面向对象编程(OOP)概念和技术。学习与MySQL…

1811_spacemacs从v.0.200.13升级到v.0.200.14的几点变化感受

全部学习汇总: GreyZhang/editors_skills: Summary for some common editor skills I used. (github.com) 安装了全新的spacemacs的配置,查看了一下版本是v.0.200.14。在此之前,我使用的版本是v.0.200.13。现在还没有在这个配置上完成我所有的…

win32汇编-使用子程序

当程序中相同功能的一段代码用得比较频繁时,可以将它分离出来写成一个子程序,在主程序中用call指令来调用它。这样可以不用重复写相同的代码, 仅仅用call指令就可以完成多次同样的工作了。Win 32汇编中的子程序也采用堆栈来传递参数&#xff…

【小黑嵌入式系统第四课】嵌入式系统硬件平台(二)——I/O设备、通信设备(UARTUSB蓝牙)、其他(电源时钟复位中断)

上一课: 【小黑嵌入式系统第三课】嵌入式系统硬件平台(一)——概述、总线、存储设备(RAM&ROM&FLASH) 文章目录 一、I/O设备1. 定时器/计数器2. ADC和DAC3. 人机接口设备3.1 键盘3.2 LCD显示器3.3 触摸屏 二、通信设备1. 通…

C#,数值计算——分类与推理Phylagglom的计算方法与源程序

1 文本格式 using System; using System.Collections.Generic; namespace Legalsoft.Truffer { public abstract class Phylagglom { public int n { get; set; } public int root { get; set; } public int fsroot { get; set; } p…

idea启动vue项目:Error:0308010C:digital envelope routines::unsupported

此问题是因为Node.js的版本原因,此处安装的Node.js是最新长期维护版: 18.16.0 (includes npm 9.5.1) 有两种解决办法: #1、方法一 重新安装低版本的node.js#2、方法二 在package.json文件中进行配置【此种方法较简单】介绍一下第二种方法: …