0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何通过1个Arduino引脚访问5个按钮

454398 来源:wv 2019-09-10 15:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

第1步:零件清单

1 x Arduino(或Arduino兼容板。我使用来自moderndevice.com的BBB)

1 x 100K电阻(棕黑黄)

1 x 1K电阻(棕黑红)

1 x 10K电阻(棕色黑色橙色)

1 x 22K电阻器(红色红色橙色)

1 x 33K电阻器(橙色橙色橙色)

1 x 68K电阻器(蓝色灰色橙色)

5 x按钮开关

面包板

一些连接它的电线

第二步:理论 - 快速回顾

如何通过1个Arduino引脚访问5个按钮

《我建议您阅读上一个Instructable的第2步和第3步了解详细信息,但是如果你很懒(嗯,我很忙),我会给你一个快速的回顾。

通常的方法读取按钮是将其连接到数字输入引脚和5V。当您按下按钮时,输入引脚连接到5V,您可以读取引脚上的逻辑高电平。

对于Arduino的模拟引脚,您可以根据引脚上的电压读取介于0和1023之间的值。 。如果有0V,则读取0,如果有5V,则读取1023.中间的每个电压将根据实际电压返回一个比例值。从此可以看出,可以连接多个按钮模拟引脚,如果你可以让每个模块引脚连接不同的电压到模拟引脚。

事实证明,这很简单。您只需为每个按钮设置不同的分压器。我将告诉你如何。

如果看一下电路,当按钮打开时,R1充当下拉电阻,但当(例如)S4按钮关闭时,电流从5V流过R5,通过按钮,通过R1和地面。 IO引脚将测量S4(或R5)与R1之间的电压 - AKA由R1和R5形成分压器。通过使用欧姆定律,我们可以计算出我们将在IO引脚上读取大约2.75V或大约562.

PS:如果其中任何一个不清楚,你应该真正阅读以前的Instructable - 我会进入更多详情。另请参阅上面关于分压器维基百科页面的链接。

步骤3:面包板

您现在可以在面包板上构建上一个电路。如果你看看前面的电路和我的面包板,你会注意到我使用了不同的电阻器。只要你记住一些事情,电阻就不是很关键。

首先,分压器中两个电阻之间的差异越大,值越接近地或者输入电压。

第二点是连接到按钮的电阻值越接近,它们之间的差异越小,这可能使得难以读取唯一值。

所以,我要做的主要是电路的变化是使R1成为47K电阻。通过使下拉电阻与范围中间的值相同,您将获得最大的读数范围。

在之前的Instructable中,我提到我有一些坏按钮,而且有些读数已经全部结束了这个地方。我猜测电动车和坏按钮等。..。..事实证明,这是一个糟糕的面包板。我正在使用两块面包板,我已经使用了超过10年,似乎有些地方不再有良好的接触了。我订购了新的面包板,但我还在等。如果您的读数不一致,请尝试将按钮移动到面包板上的其他位置。

步骤4:获取必要读数

下一步是获取您需要检查按下哪些按钮的值。下载附加的草图,并按照上一步中的电路设置运行它。将草图上传到电路板后打开串行监视器,然后按住按钮(每次1个)约2秒钟。

对于每个按钮,当您按下并释放它时,您将看到值可能在很短的时间内有点不一致,忽略那些不稳定的值并记下剩下的最大和最小值。

这就是我的5个按钮:

1(1K) - 》 930 - 935

2(10K) - 》 510 - 520

3(22K) - 》 315 - 326

4(47K) - 》 175 - 179

5(68K) - 》 127 - 135

正如您所看到的,通过可靠的连接,每个按钮的范围非常小。我所拥有的最大范围是11点,这意味着波动幅度约为0.054V。一点都不差。.有一个小的范围没有理由你不能使用E12范围的电阻值在10到100K(10k,12k,15k,18k,22k,27k,33k)之间扩展到12个按钮,39k,47k,56k,68k,82k和100k),下拉电阻为27K - 33K。

步骤5:编码

这是我进行改进的主要领域。即使先前的硬件工作并且代码可以确定按下了哪个按钮,只要您按下按钮就会报告多个按钮按下。

我现在需要的是让Arduino读取一个按钮每次按下并释放按钮时按。附加的代码执行此操作。我也只是在检查按钮状态之间延迟了50ms,这似乎足以让它去抖动。

我改变的另一件事是清理代码。前面的代码为每个按钮使用了3个常量。这个版本使用数组,使代码更容易阅读。为了使它适用于你的值,替换buttonLowRange和buttonHighRange数组中每个按钮的值(你在上一步中得到的)。

完成后,您只需要在dealWithButtonPress方法中设置要将按钮链接到的操作。现在它只是在串行输出上打印一条消息,指示按下了哪个按钮。

步骤6:扩展它

正如我在步骤4中提到的那样,这可能会以最小的努力扩展到12个按钮。

模拟输入有一个10位分辨率,使我们在0V和参考电压之间提供1023个值。如果将其除以12个按钮,则可以看到每个按钮必须在85个点的唯一范围内。为了安全起见,我会称它不超过40 - 50。如果你这样做,你将不得不使用相当精确的电阻器(或测量它们并使用接近E12值的电阻器)你会相当可能需要更好的方法去除按钮。

从我的所有值都在11点的最大范围内的事实,这似乎是完全可行的。

第7步:最后的想法

这个版本比以前的版本要好很多。我不喜欢的一件事是依靠延迟进行去抖动。我会看看中断,而不是那样读取按钮,但是现在它运行得很好。

正如我在步骤4中提到的,通过与开关的牢固连接,每个按钮的范围非常小。我得到的最大范围是11分,这意味着没有理由不使用10到100K之间的E12电阻值(10k,12k,15k,18k,22k,27k,33k)来扩展到12个按钮,39k,47k,56k,68k,82k和100k),下拉电阻约为27K - 33K。

如果有任何不清楚的地方,请随时询问,我会在必要时回答并更新Instructable。

感谢您抽时间阅读!我希望你发现这个版本比第一个版本更有用。任何反馈或评级(眨眼,眨眼)将不胜感激。此外,如果您发现这有用,请花时间在微控制器竞赛中为我投票。

这是一个非常大的项目的第一部分。希望这次我能完成它(我不打算在接下来的几周里搬到另一个大陆)。请留意我创建时钟的下一个教程,这个时钟显示多个时区,一个RGB Orb,7段显示,并将这一切与一个将更新状态的在线应用程序连接起来(如果可能在单个Arduino上)。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195974
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    推荐5让测试效率翻倍的MCP

    推荐5让测试效率翻倍的MCP
    的头像 发表于 09-19 10:02 432次阅读
    推荐<b class='flag-5'>5</b><b class='flag-5'>个</b>让测试效率翻倍的MCP

    如何用Arduino Nano/UNO R3开发板给另一Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序bootlaoder

    本文介绍了如何用能够Arduino IDE下载的Arduino Nano/UNO R3开发板给另一Arduino IDE不能下载的Arduino
    的头像 发表于 08-08 20:16 3064次阅读
    如何用<b class='flag-5'>Arduino</b> Nano/UNO R3开发板给另一<b class='flag-5'>个</b><b class='flag-5'>Arduino</b> IDE不能下载的<b class='flag-5'>Arduino</b> Nano/UNO R3开发板重新烧录引导程序bootlaoder

    《ESP32S3 Arduino开发指南》第二章 Arduino基础知识

    门槛很低。几乎任何人,即使不懂电脑编程也能用Arduino做出很酷的东西,比如点灯,控制马达,对传感器进行回应。简单来说,使用Arduino去开发优势非常明显,可以归纳为一下5点:1
    发表于 05-13 09:28

    无需接线!1底板可测试海凌科5款人脸识别模块

    测试。ONEFO101模组测试板1款测试底板51FO101测试底板,支持测试海凌科5种人脸识别模块,就如同铅笔到自动铅笔的升级,“笔芯”
    的头像 发表于 05-12 12:06 760次阅读
    无需接线!<b class='flag-5'>1</b><b class='flag-5'>个</b>底板可测试海凌科<b class='flag-5'>5</b>款人脸识别模块

    LM26484 2 DCDC 和 1 LDO 可配置 PMIC数据手册

    稳压器输出电压均为 外部可调。LDO 控制器是一种低压 NMOS 稳压器。LM26484是 采用 5 x 4 x 0.8 mm WQFN-24 引脚封装。
    的头像 发表于 04-29 09:43 716次阅读
    LM26484 2 <b class='flag-5'>个</b> DCDC 和 <b class='flag-5'>1</b> <b class='flag-5'>个</b> LDO 可配置 PMIC数据手册

    LP8720系列 1 降压型 DC/DC 和 5 具有 I2C 兼容接口的线性稳压器数据手册

    LP8720 是一款多功能、可编程电源管理单元,针对子模块电源需求解决方案进行了优化。该器件集成了 1 带动态电压刻度 (DVS) 的高效 400 mA 降压 DC-DC 转换器、5
    的头像 发表于 04-29 09:38 595次阅读
    LP8720系列 <b class='flag-5'>1</b> <b class='flag-5'>个</b>降压型 DC/DC 和 <b class='flag-5'>5</b> <b class='flag-5'>个</b>具有 I2C 兼容接口的线性稳压器数据手册

    有源晶振四引脚是如何分布与定义的

    常见的引脚分布规律 有标记的引脚作为起始引脚 :许多有源晶振会在其中一引脚上或者靠近该引脚的外
    的头像 发表于 04-10 17:20 1228次阅读
    有源晶振四<b class='flag-5'>个</b><b class='flag-5'>引脚</b>是如何分布与定义的

    具有4降压稳压器、1LDO和8位ADC的DA9080 PMIC数据手册

    DA9080 是一款 5 路输出可配置电源管理 IC(PMIC),具有 4 同步降压稳压器和 1 200mA LDO。其中一降压转换
    的头像 发表于 04-02 16:54 682次阅读
    具有4<b class='flag-5'>个</b>降压稳压器、<b class='flag-5'>1</b><b class='flag-5'>个</b>LDO和8位ADC的DA9080 PMIC数据手册

    如何区分场效应管mos管三引脚

    场效应管mos管三引脚怎么区分
    发表于 03-07 09:20 0次下载

    通过Arduino Nano Matter开发板构建智能卷帘系统

    在本指南中,您将学习如何通过Arduino NanoMatter开发板和板上的Silicon Labs(芯科科技)MGM240S多协议无线模块来构建一智能卷帘系统。该系统可通过 Am
    的头像 发表于 02-28 09:46 917次阅读
    <b class='flag-5'>通过</b><b class='flag-5'>Arduino</b> Nano Matter开发板构建智能卷帘系统

    把TS3A5017的2EN引脚通过10K的电阻接地,为什么这2引脚仍然是高电平?

    我把TS3A5017的2EN引脚通过10K的电阻接地,为什么这2引脚仍然是高电平
    发表于 02-10 07:54

    开源项目!手把手教你制作一互动式LED墙壁时钟!

    电路图顺序焊接电阻、行线和列线,最后连接至Arduino的相应引脚。 步骤五:插入LED灯带 通过按钮板顶部的槽口小心地插入LED灯带,并确保其正确弯曲
    发表于 02-08 17:47

    四位数码管12引脚怎么分配

    在电子显示技术中,四位数码管作为一种常见的显示器件,广泛应用于各种数字显示系统。其通过控制不同段(A-G)的发光二极管(LED)来显示数字或字符。对于具有12引脚的四位数码管,合理的引脚
    的头像 发表于 01-30 15:00 5w次阅读

    通过Skyvia Connect SQL终端节点访问任何数据

    通过 Skyvia Connect SQL 终端节点访问任何数据   通过 Skyvia Connect SQL 终端节点访问任何数据ADO.NET 数据网关 使用 Skyvia Co
    的头像 发表于 01-02 09:31 595次阅读
    <b class='flag-5'>通过</b>Skyvia Connect SQL终端节点<b class='flag-5'>访问</b>任何数据

    DNS用户访问网站原理

    浏览器输入网址后发生了什么 这是一经典的问题,通过回答的细致程度,可以判断出,小白、新手、中级玩家、高端玩家。 关于这个问题,小到三两句话,大到你用三月都说不完的知识点,知识深似海。 1
    的头像 发表于 12-17 15:28 1369次阅读
    DNS用户<b class='flag-5'>访问</b>网站原理