找回密码
 立即注册

QQ登录

只需一步,快速开始

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

Arduino教程-抛弃外部电阻!

[复制链接]
跳转到指定楼层
楼主
Hi,大家好!前两次呢,我们一起学习了按键开关的基本使用。在每一次的电路连接过程中,我们每次都需要额外连接一个10k欧姆大小的电阻。话说如果只是想学习一下按键开关,就不得不需要额外再连接一个电阻,总觉得有点繁琐,能不能去掉这个电阻呢?可喜可贺!答案是肯定的!
好!废话不多啰嗦!让我们直奔主题,看看是如何去掉那个电阻的!
首先,还是要我们做准备一下。
硬件方面
图片来源:Arduino电路配件
具体包括如下:
  • Arduino UNO电路板(1块)
  • 面包板(1块)
  • 按键开关(1个)
  • 面包线(2根)
看!这次果然抛弃了电阻,还省了一根儿面包线,只用了两根。测试用的LED神灯,还是用Arduino UNO电路板自带的那盏。关于Arduino UNO电路板自带的这盏LED神灯,这里就不再次赘述了。印象模糊的同学,可以翻看前两次的实验记录。
软件方面Arduino官方提供的IDE。
连接电路
图片来源:Arduino连接开关按键电路示意图
对于类似电路的连接,都是轻车熟路了吧?!这次更是简单,只剩下了一个开关按键,真的是连电阻都没有啦!下面进行最后一步!
添加几行代码首先还是让我们新建一个项目窗口。

图片来源:Arduino官方IDE
  1. // 对Arduino电路板或相关状态进行初始化方法
  2. void setup() {
  3.   // 开启串行通信,并设置其频率为9600。
  4.   // 如果没有特别要求,此数值一般都为9600。
  5.   Serial.begin(9600);
  6.   // 配置2号针脚为输入状态,
  7.   // 并设置使用内部上拉电阻。
  8.   pinMode(2, INPUT_PULLUP);
  9.   // 定义LED输入针脚号为13号针脚。
  10.   // 注:此处我们使用的LED神灯是Arduino UNO电路板自带,
  11.   // 此神灯对应的针脚号默认为13,此数值不得随意更改,
  12.   // 所以这里定义的数值13是为了和默认值相对应。
  13.   pinMode(13, OUTPUT);
  14. }
  15. // 系统调用,无限循环方法
  16. void loop() {
  17.   // 读取2号针脚上的输入信号的数值
  18.   int sensorVal = digitalRead(2);
  19.   // 为了更直观的看到2号针脚输入的信号值,
  20.   // 将获取到的数值打印到串行调试窗口,方便调试。
  21.   Serial.println(sensorVal);
  22.   // 如果获取到的数值为HIGH(数值大小等于1),
  23.   // 则向13号针脚发送LOW信号(数值大小等于0),熄灭LED神灯,
  24.   // 反之则发送HIGH信号(数值大小等于1),点亮LED神灯。
  25.   if (sensorVal == HIGH) {
  26.     digitalWrite(13, LOW);
  27.   } else {
  28.     digitalWrite(13, HIGH);
  29.   }
  30. }
复制代码


使用这个内部电阻还有一点需要注意,那就是它会将按键的输入状态取反。也就是说,当按键断开的时候,输入为HIGH,也就是数值为1,按键按下的时候,输入为LOW,也就是数值为0。这也是为什么我们会在代码的第70行进行一次if判断,并将输入状态重新调整过来的原因。

图片来源:Arduino官方IDE的文件编辑菜单选项
OK!点击一下上图中标有向右指向的箭头图标,将编写好的代码烧入Arduino UNO电路板。如果一切顺利,此时就可以通过按下按键,让LED神灯点亮,松开按键,LED神灯熄灭。同时,你还可以点击上图中最右边的放大镜图标,打开串口调试窗口,查看实时的按键输出状态。

图片来源:Arduino串口调试窗口
每次按下按键或松开按键,都可以从串口调试窗口中实时看到按键的输入数值。
总结通过这次学习,我们知道了如何调用Arduino UNO自带的内部上拉电阻,还了解到此上拉电阻会按键开关的输入状态进行取反。通过使用内部的上拉电阻,我们在使用开关按键的时候可以少连接一个外部电阻,将电路的连接变的更简单。但相应的代价是,要将获取到的数值进行取反。
下期预告经过这几次对按键开关的学习,我们对按键开关的使用已经有了初步的掌握。下一次,我们将过去几次的学习融合到一起,做一个小实验,在用按键开关控制LED神灯的同时,我们将试着记录按键开关的总按下次数!


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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶1 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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