YFROBOT创客社区

标题: Arduino入门教程—拓展实验篇二 按钮无下拉电阻控制LED [打印本页]

作者: AllBlue    时间: 2013-6-12 09:15
标题: Arduino入门教程—拓展实验篇二 按钮无下拉电阻控制LED
本帖最后由 AllBlue 于 2013-8-29 16:13 编辑

按钮无下拉电阻控制LED

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

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

下面我们看下电路图:
[attach]366[/attach]

电路中我们将之前的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

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


作者: tiantianyouyou    时间: 2019-5-1 19:52
Arduino入门教程—拓展实验篇二 按钮无下拉电阻控制LED




欢迎光临 YFROBOT创客社区 (http://yfrobot.com.cn/) Powered by Discuz! X3.1