找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 47621|回复: 12
打印 上一主题 下一主题
收起左侧

Arduino教程-获取输入数字信号

  [复制链接]
跳转到指定楼层
楼主
Hi,大家好!经过前几次的学习,我们知道了如何让LED神灯进行各种闪烁。在学习的过程中,了解到Arduino的基础知识。单从知识构成来说,我们学习了如何向电器元件发送信号,比如向LED发送的各种闪烁的模拟信号和数字信号。接下来呢,我们将试着挑战一下如何获取电器元件的输入信号。
嗯,这一次我们先试着获取电器元件输入的数字信号。为了完成此次学习,我们需要从硬件和软件两方面做如下准备。
硬件方面
图片来源:Arduino电路配件
具体包括如下:
  • Arduino UNO电路板(1块)
  • 面包板(1块)
  • 10k电阻(1个)
  • 按键开关(1个)
  • 面包线(3根)
猛然看来,比起前几次来说,一下子多出来不少部件呢!几个部件都不复杂,简单做个介绍。以此图为例,左上方是面包板,是用来连接复杂电路的,以左边E和F行号为界线,分为上半部分和下半部分,这两部分互不连通。上下两部分的横向引脚互不连通,纵向引脚处于连通状态。在用面包板连接电路时。
紧挨着面包板的右侧是10k的电阻,这个不必细说,很简单的元器件。再向右看是一个按键开关,这次要获取的数字信号,就是这个部件发出的。最右侧是面包线,可以看作是普通的导线。下面中间的那个电路板自然是Arduino UNO了,之前就已经介绍过,这里不必多说。
好!这次用到的硬件就这些。
软件方面Arduino官方提供的IDE,和之前一样。
好的!需要准备的东西就这些。下面就开始动手啦!!
连接电路
图片来源:Arduino连接开关按键电路示意图
按照图中所示,将我们准备的元器件连接好。这里有两点需要注意,第一点是开关按键是长方形的,所以要注意插入面包板时的方向。第二点是面包板上下两部分的引脚连通性,横向是不连通的,纵向是连通的。
下面是最后一步!
添加几行代码最后,我们还需要加入几行代码,来获取按键输入的数字信号。
首先,像之前一样,新建一个项目窗口。

图片来源:Arduino官方IDE



  1. // 定义2号引脚为按键插入引脚
  2. int pushButton = 2;

  3. // 对Arduino电路板或相关状态进行初始化方法
  4. void setup() {
  5.   // 开启串行通信,并设置其频率为9600。
  6.   // 如果没有特别要求,此数值一般都为9600。
  7.   Serial.begin(9600);
  8.   // 设置2号引脚为信号输入引脚
  9.   pinMode(pushButton, INPUT);
  10. }

  11. // 系统调用,无限循环方法
  12. void loop() {
  13.   // 读取按键输入针脚的信号值,
  14.   // 将其存入buttonState变量。
  15.   int buttonState = digitalRead(pushButton);
  16.   // 将获取的数字信号值打印到串口显示
  17.   Serial.println(buttonState);
  18.   // 每次循环之间,延时一毫秒执行
  19.   delay(1);
  20. }
复制代码



代码就这么多!这次又出现了几个新面孔,下面做一个介绍。Serial.begin方法的作用是设置串行通信的频率。这里注意一下pinMode方法的第二个参数,在前面几次点亮LED神灯的教程里,这里都是OUTPUT,这次设置的是INPUT,作用与之前相反。之前是对LED设置状态,属于输出值,这里是从按键获取状态,属于输入值。digitalRead顾名思义,调用时输入一个引脚号,可读取这个引脚输入的信号。Serial.println方法将数值打印到串口进行显示。
数一数,这次程序中出现的新面孔,一共只有三个!So easy!最后只需要将程序烧入Arduino即可。

图片来源:Arduino官方IDE的文件编辑菜单选项(注意此处不是指Arduino顶部工具栏)
烧入方法点击上图中,标有向右指向的箭头图标,即可自动完成从编译到烧入整个过程。如果不出意外,此时程序已经烧入Arduino。单击上图最右侧的放大镜图标,打开串口调试窗口。此时窗口正在不停的输出数字0,按下Arduino电路板上的按键按钮,如果一切正常,数字0会变为1。

图片来源:Arduino串口调试窗口
松开按键,输出的数字变为0,按下变为1。
总结至此整个挑战完成!此时就可以获取到Arduino上电器元件的操作状态。通过这次学习,我们可以获取到电器元件所输入的数字信号。当元器件状态改变时,我们可以近乎实时的获取到元器件的当前状态。这为我们以后通过元器件控制其他电气设备提供了一种可能。
下期预告这一次,虽然我们可以获取到按键开关的输入状态。但按键开关的输入状态属于数字信号,属于非连续信号。当需要进行连续渐变控制的时候,数字信号就会显得力不从心。下一次,我们将再接再厉,挑战一下如何获取元器件输入的模拟信号!学完之后,我们就可以通过连续信号对渐变状态进行控制!


ohcoder的系列精彩Arduino教程:
Arduino教程-初识Arduino(包含本教程目录):http://www.51hei.com/bbs/dpj-41334-1.html
Arduino教程-开篇:http://www.51hei.com/bbs/dpj-41335-1.html
Arduino教程-点亮LED神灯:http://www.51hei.com/bbs/dpj-41336-1.html
Arduino教程-让LED神灯闪烁:http://www.51hei.com/bbs/dpj-41337-1.html
Arduino教程-让LED神灯亮度渐变:http://www.51hei.com/bbs/dpj-41338-1.html
Arduino教程-获取输入数字信号:http://www.51hei.com/bbs/dpj-41339-1.html
Arduino教程-获取输入模拟信号:http://www.51hei.com/bbs/dpj-41340-1.html
Arduino教程-另一种时间延迟:http://www.51hei.com/bbs/dpj-41331-1.html
Arduino教程-按键开关:http://www.51hei.com/bbs/dpj-41341-1.html
Arduino教程-停止抖动!:http://www.51hei.com/bbs/dpj-41333-1.html
Arduino教程-抛弃外部电阻!:http://www.51hei.com/bbs/dpj-41332-1.html
Arduino教程-用按键开关计数:http://www.51hei.com/bbs/dpj-41330-1.html

………后续持续更新中请打开:http://www.51hei.com/bbs/dpj-41334-1.html
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:104667 发表于 2016-1-29 10:12 | 只看该作者
你好楼主,为什么我松开按键,输出的数字变为1,按下变为0?
回复

使用道具 举报

板凳
ID:110085 发表于 2016-3-21 22:46 | 只看该作者
reyern
回复

使用道具 举报

地板
ID:111051 发表于 2016-3-27 19:50 | 只看该作者
请问楼主,Arduino怎么连接wifi模块呢,需要哪些步骤
回复

使用道具 举报

5#
ID:206017 发表于 2017-6-11 16:21 | 只看该作者
通俗易懂 好佩服!!比官方的教学还好
回复

使用道具 举报

6#
ID:53784 发表于 2018-8-25 15:11 | 只看该作者
“连接电路”没出现?
回复

使用道具 举报

7#
ID:53784 发表于 2018-8-27 11:00 | 只看该作者
“连接电路”,无图?
回复

使用道具 举报

8#
ID:53784 发表于 2018-8-27 11:09 | 只看该作者
本节图片有点混乱
回复

使用道具 举报

9#
ID:835694 发表于 2020-10-28 16:22 | 只看该作者
线路图
回复

使用道具 举报

10#
ID:859699 发表于 2020-12-13 20:49 | 只看该作者
楼主,我要模拟量的输出有什么程序吗?请告诉我。
回复

使用道具 举报

11#
ID:859699 发表于 2020-12-14 21:22 | 只看该作者
谁有Arduino的mage328p与MLX9014的电压输出信号程序。
回复

使用道具 举报

12#
ID:844772 发表于 2020-12-15 10:31 | 只看该作者
q221520amlls 发表于 2016-1-29 10:12
**** 作者被禁止或删除 内容自动屏蔽 ****

估计开的时候你让管脚悬空,所以它可能是1或0,状态不一定,可使用内部上拉,如pinMode(pushButton, INPUT_PULLUP);然后,你实际把开关接地了,所以按下是0.楼主没想到有人认真去做了。
回复

使用道具 举报

13#
ID:337280 发表于 2021-5-25 10:31 | 只看该作者
q221520amlls 发表于 2016-1-29 10:12
**** 作者被禁止或删除 内容自动屏蔽 ****

应该是按钮的正负极接反了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表