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

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

3天内不再提示

怎样将1个模拟输入用于Arduino的6个按钮

454398 来源:wv 2019-10-25 10:21 次阅读

步骤1:电路

怎样将1个模拟输入用于Arduino的6个按钮

Arduino模拟输入可接受0V至5V输入。此输入具有10位分辨率,这意味着信号被分成2 ^ 10个段或1024个计数。基于此,在允许同时按下的同时,我们最多可能输入到模拟输入中的是10个按钮到1个模拟输入。但是,这不是一个完美的世界。导体中存在电阻,外部来源的噪声以及功率不完善。因此,为了给自己带来足够的灵活性,我计划设计6个按钮。这在一定程度上受到TinkerCAD Circuits具有6开关DIP开关对象这一事实的影响,这将使测试变得容易。

设计的第一步是确保每个按钮在按下时单独按下,将提供独特的电压。这排除了所有电阻器的值相同。下一步是,并联添加电阻值时,电阻值不能与任何单个电阻器值相同。当电阻并联时,可以通过Rx = 1/[(1/R1)+(1/R2)]来计算得到的电阻。因此,如果R1 = 2000和R2 = 1000,则Rx = 667。我推测通过将每个电阻器的尺寸加倍,对于任何组合我都不会看到相同的电阻。

因此,到目前为止,我的电路是有6个开关,每个开关都有自己的电阻。但是,完成该电路还需要一个电阻。

最后一个电阻有3个用途。首先,它充当下拉电阻。如果没有电阻,则当没有按钮按下时电路将不完整。这将使Arduino模拟输入上的电压浮动到任何电压电位。下拉电阻器实质上将电压下拉至0V。第二个目的是限制该电路的电流。欧姆定律指出,V = IR或电压=电流乘以电阻。在给定的电压源下,电阻越大,电流就越小。因此,如果将5V信号施加到500ohm电阻,则我们可以看到的最大电流为0.01A或10mA。第三个目的是提供信号电压。流过最后一个电阻的总电流为:i = 5V/Rtotal,其中Rtotal = Rlast + {1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R 5)+(1/R 6)]}。但是,对于每个按下了相应按钮的电阻,仅包括1/Rx。从总电流中,提供给模拟输入的电压将为i * Rlast或i * 500。

步骤2:证明-Excel

证明该电路具有独特的电阻和独特的电压的最快,最简单的方法是使用Excel的功能。

我设置了所有可能的组合切换输入并按照二进制模式顺序组织这些。值“ 1”表示开关打开,空白表示开关关闭。在电子表格的顶部,我输入了每个开关和下拉电阻的电阻值。然后,我计算了每种组合的等效电阻,但当所有电阻都关闭时除外,因为这些电阻在没有电源的情况下不会产生影响。为了使我的计算变得容易,以便我可以复制和粘贴到每个组合,我通过将每个开关值(0或1)乘以其反向电阻值来将所有组合包括在计算中。如果开关断开,这样做可以从计算中消除其电阻。可以在电子表格的图像中看到生成的方程式,但是Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6)。使用Itotal = 5V/Req,我们确定通过电路的总电流。这与流过下拉电阻的电流相同,并向我们的模拟输入提供电压。计算公式为Vin = Itotal x Rx。查看Req数据和Vin数据,我们可以发现我们确实有唯一的值。

在这一点上,我们的电路似乎可以正常工作。现在要弄清楚如何对Arduino进行编程

第3步:Arduino编程

当我开始考虑如何对Arduino进行编程时,我最初计划设置各个电压范围来确定开关是打开还是关闭。但是,有一天晚上躺在床上时,我想到应该可以找到一个方程式来做到这一点。怎么样? EXCEL。 Excel能够计算方程以最适合图表中的数据。为此,我需要一个开关(二进制)的整数值与对应于该值的电压输入之间的等式。在我的Excel工作簿中,将“整数值”放在电子表格的左侧。现在确定我的方程式。

下面是有关如何在Excel中确定直线方程式的快速教程

1)选择一个不包含任何数据的单元格。如果选择了一个具有数据的单元格,Excel将尝试猜测要趋势的单元格。因为Excel很少能正确预测,所以这使设置趋势变得更加困难。

2)选择“插入”选项卡,然后选择“散点图”。

3)右键单击图表框,然后单击“选择数据。..”。这将弹出“选择数据源”窗口。选择“添加”按钮继续选择数据。

4)给它指定一个系列名称(可选)。通过单击向上箭头,然后选择电压数据,选择X轴的范围。通过单击向上箭头,然后选择整数数据(0-63),选择Y轴的范围。

5)右键单击数据点,然后选择“添加趋势线。..”。在“设置趋势线格式”窗口中,选择“多项式”按钮。观察趋势,我们发现2的阶数不太匹配。我选择了3阶,觉得这更准确。选中“在图表上显示方程式”复选框。现在,最终方程式显示在图表上。

6)完成。

确定。回到Arduino程序。现在我们有了方程式,对Arduino进行编程很容易。代表开关位置的整数以1行代码计算。通过使用“ bitread”功能,我们可以获取每个单独位的值,从而了解每个按钮的状态。 (请参阅照片)

第4步:TinkerCAD电路

如果您尚未签出TinkerCAD电路,请立即执行。等待!!!!完成阅读我的Instructionable,然后将其签出。 TinkerCAD Circuits使测试Arduino电路非常容易。它包括几个电子对象和Arduino,甚至允许您对Arduino进行编程以进行测试。

要测试我的电路,我使用DIP开关组设置了6个开关并将它们与电阻器捆绑在一起。为了证明我的Excel电子表格中的电压值正确,我在Arduino的输入处显示了一个电压表。一切都按预期工作。

为证明Arduino编程工作正常,我使用Arduino的数字输出将开关的状态输出到LED

然后我将每个开关切换为一切可能的组合,并为能说“ IT WORKS”而感到自豪!!

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

    关注

    0

    文章

    134

    浏览量

    12805
  • Arduino
    +关注

    关注

    188

    文章

    6471

    浏览量

    187205
  • 模拟输入
    +关注

    关注

    0

    文章

    17

    浏览量

    10680
收藏 人收藏

    评论

    相关推荐

    ads1013有两模拟输入,可以接不同的两模拟输入吗?

    ads1013有两模拟输入,可以接不同的两模拟输入吗,驱动程序中怎么分别读两
    发表于 12-02 08:02

    开源项目!基于 Arduino 的 MIDI 架子鼓

    牢固地固定在插槽中。 第 6 步:给鼓垫接线 1、固定电缆: 使用热胶将带状电缆连接到垫子上。 2、焊接鼓垫: 通过焊接鼓垫连接到多频段带状电缆。 第 7 步:制作 Arduino
    发表于 11-25 12:00

    TLV320AIC3106有10模拟输入和7模拟输出,这些模拟输入输出如何理解?

    请问,官网上说TLV320AIC3106有10模拟输入和7模拟输出,这些模拟
    发表于 10-25 07:35

    开源项目!基于 Arduino DIY 漂亮的宏机械键盘

    其与 Arduino 的 GND 引脚相连。随后,我每个按钮的电线焊接到 Arduino 的一数字引脚上,同时避开了
    发表于 08-19 17:02

    为什么可以GPIO引脚同时配置为输入输出模式呢?

    GPIO_MODE_INPUT_OUTPUT参数,即可将引脚配置为输入输出模式。 问题来了:1.为什么可以GPIO引脚同时配置为输入
    发表于 06-05 07:37

    超酷!基于ESP32自制一蓝牙游戏手柄

    按钮编号。每个键名都有一对应的引脚编号。 /* * ANDROID游戏手柄 * {A=1, B=2, C=3, X=4, Y=5, Z=6, L
    发表于 05-06 16:59

    如何用Arduino制作一简易自动喂鱼器

    超声波距离传感器 跳线 玻璃瓶(你也可以使用鱼缸) 束线带 用于放置玻璃瓶的小盒子(如果你使用鱼缸则不需要) 3D打印机和PLA细丝 Arduino IDE 第1步:3D打印 将用于
    发表于 03-28 11:25

    具有2降压转换器和4输入电压LDO的TPS65051-Q1 6通道电源管理IC数据表

    电子发烧友网站提供《具有2降压转换器和4输入电压LDO的TPS65051-Q1 6通道电源管理IC数据表.pdf》资料免费下载
    发表于 03-07 09:22 0次下载
    具有2<b class='flag-5'>个</b>降压转换器和4<b class='flag-5'>个</b>低<b class='flag-5'>输入</b>电压LDO的TPS65051-Q<b class='flag-5'>1</b> <b class='flag-5'>6</b>通道电源管理IC数据表

    没有电位器,用两按钮可以实现变频器调速吗?

    没有电位器,用两按钮可以实现变频器调速吗? 变频器是一种广泛应用于电机调速的设备,它能够调节电机的转速,提高电机的效率,并且降低能耗。电位器是变频器调速中常用的组件,但是在某些情况下,由于种种原因
    的头像 发表于 02-18 16:55 1813次阅读

    构建一基于Arduino的空气质量监测系统

    呼吸清洁、健康的空气对我们的健康至关重要,但在许多环境中,空气质量仍然是一问题。在本文中,我们深入探讨如何创建一基于Arduino的空气质量监测系统。我们将从讨论各种组件开始,然
    的头像 发表于 02-11 12:03 4193次阅读
    构建一<b class='flag-5'>个</b>基于<b class='flag-5'>Arduino</b>的空气质量监测系统

    如何按钮连接到Arduino

    在本快速入门指南中,您将学习如何按钮连接到Arduino板,并根据按钮是否被按下来读取HIGH或LOW。您将使用电路板上随附的发光二极管 (LED)通过
    的头像 发表于 02-11 10:52 3908次阅读
    如何<b class='flag-5'>将</b><b class='flag-5'>按钮</b>连接到<b class='flag-5'>Arduino</b>板

    如何HC-SR04连接到Arduino并编写一简单的程序来测量距离

    一种流行的Arduino超声波传感器是HC-SR04。它广泛用于非接触式距离测量,通常用于机器人和自动化项目。本指南向您展示如何HC-S
    的头像 发表于 02-11 10:17 2389次阅读
    如何<b class='flag-5'>将</b>HC-SR04连接到<b class='flag-5'>Arduino</b>并编写一<b class='flag-5'>个</b>简单的程序来测量距离

    三菱PLC模拟量模块怎样调节

    三菱PLC模拟量模块是一种用于测量和控制模拟信号的设备。它可以模拟信号转换为数字信号,并通过PLC进行处理和控制。本文
    的头像 发表于 02-05 14:56 3139次阅读

    关于PLC的模拟量模块,怎样来使用

    PLC(可编程逻辑控制器)是一种用于自动化控制系统的电子设备,用于监视输入信号并根据预先设定的逻辑和算法来控制输出。其中一重要的组成部分是模拟
    的头像 发表于 02-05 14:52 1638次阅读

    ESP32与Arduino板之间的区别差异

    Arduino板包括一ATmega328P8位微控制器,具有0至13数字引脚。这些引脚用于数字输入和数字输出,其中数字
    的头像 发表于 02-02 14:36 7554次阅读
    ESP32与<b class='flag-5'>Arduino</b>板之间的区别差异