YFROBOT创客社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15147|回复: 3
打印 上一主题 下一主题

Arduino入门教程—拓展实验篇二 按钮无下拉电阻控制LED

[复制链接]

签到天数: 866 天

[LV.10]以坛为家III

跳转到指定楼层
楼主
发表于 2013-6-12 09:15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 AllBlue 于 2013-8-29 16:13 编辑

按钮无下拉电阻控制LED

基础实验三 按钮控制LED中我们介绍过使用按钮控制LED,我们当时在按钮连接时,使用了一个10K的下拉电阻来将I/O口的电平钳位在低电平,从而稳定控制。
PS:数字电路有三种状态:高电平、低电平、和高阻状态(可能为高也可能为低),有些应用场合不希望出现高阻状态,可以通过上拉电阻或下拉电阻的方式使处于稳定状态,具体视设计要求而定!

在Arduino硬件介绍时,我们有过这样的介绍“ ☻14路数字输入输出口:工作电压为5V,每一路能输出和接入最大电流为40mA每一路配置了20-50K欧姆内部上拉电阻(默认不连接)。除此之外,有些引脚有特定的功能 ”;这说明我们可以使用arduino本身的上拉电阻来代替外部的下拉,也就是说我们可以不使用下拉电阻,直接通过按钮控制。这里要说一句,arduino只有上拉功能,无下拉功能~
PS:上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。下拉同理。也是是将不确定的信号通过一个电阻钳位在低电平。
上拉是对器件输入电流,下拉是输出电流;强弱只是上拉电阻的阻值不同,没有什么严格区分;对于非集电极(或漏极)开路输出型电路(如普通门电路)提升电流和电压的能力是有限的,上拉电阻的功能主要是为集电极开路输出型电路输出电流通道。

下面我们看下电路图:

电路中我们将之前的10K电阻去掉了,这时候如果你还是通过以前的程序来控制,会发现灯的状态不稳定,有时候动动线都会引起亮灭的变化,这时的数字4端口状态就为高阻态。

下面我们就看下我们使用内部上拉功能的程序:

  1. /*
  2. 按钮无下拉电阻控制LED
  3. 读取按键值,来点亮LED灯
  4. BY TSRobot
  5. */

  6. #define LED 8 //定义LED引脚为8
  7. #define BUTTON 4 //定义按钮开关引脚为4
  8. int val = 0; //变量val用来储存按钮状态

  9. void setup(){
  10. pinMode(LED, OUTPUT); //设定LED引脚为输出状态
  11. pinMode (BUTTON,INPUT_PULLUP); //设定按钮引脚为输入状态,并拉高
  12. }

  13. void loop(){
  14. val = digitalRead(BUTTON); //读取按钮状态并储存
  15. //当按钮按下时,设定val为HIGH
  16. if (val == HIGH){
  17. digitalWrite(LED,LOW); //开启LED灯
  18. }else{
  19. digitalWrite(LED,HIGH); //关闭LED灯
  20. }
  21. }
复制代码

程序中主要就是靠着个语句实现功能的:pinMode (BUTTON,INPUT_PULLUP); //设定按钮引脚为输入状态,并拉高
官网资料: http://www.arduino.cc/en/Tutorial/InputPullupSerial

将这个程序烧写到控制板中,灯就受到按钮的控制了,而且很稳定哦~~~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对

签到天数: 22 天

[LV.4]偶尔看看III

沙发
发表于 2019-5-1 19:52:19 | 只看该作者
Arduino入门教程—拓展实验篇二 按钮无下拉电阻控制LED
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|联系我们|YFROBOT ( 苏ICP备20009901号-2  

GMT+8, 2024-5-17 16:40 , Processed in 0.045653 second(s), 26 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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