找回密码
 立即注册

QQ登录

第4课 — 无外部电阻情况下使用开关

来源: 学习教程 奥松-Neil 2016-11-18 17:34 显示全部楼层 |阅读模式
在基础教程中我们讲解了如何使用按键来控制一个LED的亮灭,其中我们给按键连接了一个 10K 的上拉电阻,那是因为当按键没有按下时,数字输入引脚需要有电阻才能维持在固定的值,但是 Arduino 内部就是带有上拉电阻的,可以借用这个电阻,写入 HIGH 值到某个输入模式的引脚上来启动这个上拉电阻,这样就可以简化电路的接线。
例如我们同样来使用开关来控制板载 13 脚的 LED
软件环境:Arduino 1.7.10
硬件:
  • Starduino UNO R3 * 1个
  • USB 数据线
  • 按键
硬件连接:

如图所示,只需要将按键与 UNO 连接起来,不需要任何其他的外设,是不是硬件连接上简单了一些呢?
01.png
示例代码:
  1. const int ledPin = 13;          // 定义LED引脚
  2. const int inputPin = 2;         // 定义按键连接引脚

  3. void setup() {
  4.   pinMode(ledPin, OUTPUT);
  5.   pinMode(inputPin, INPUT);
  6.   digitalWrite(inputPin,HIGH);  // 设置按键引脚为HIGH,使用内部上拉电阻
  7. }

  8. void loop(){
  9.   int val = digitalRead(inputPin);  // 读取按键的值
  10.   if (val == HIGH)                  // 如果检测到是高电平
  11.   {
  12.     digitalWrite(ledPin, LOW);     // 关闭LED
  13.   }
  14.   else
  15.   {
  16.     digitalWrite(ledPin, HIGH);      // 打开LED
  17.   }
  18. }
  19.    
复制代码
  • 代码回顾

digitalWrite(inputPin,HIGH);
是写入 HIGH 到处在输入模式的接口,用来启用该接口的上拉电阻,如果要关闭上拉电阻的使用,则可以写入 LOW 到这个引脚
在较新版本的 Arduino 中
pinMode(inputPin, INPUT);
digitalWrite(inputPin,HIGH);

以上两条语句,可以使用下面一个语句来代替
PinMode(inputPin,INPUT_PULLUP);
这种使用方式需要注意的是,如果某个引脚不断在输入和输出模式之间切换,在每次切换时,接口状态会保持原本的 HIGH 或 LOW,也就是说,如果将一个输出接口设置为 HIGH,在切换到输入模式时,上拉电阻会自动启用,如果这时候去读取接口的值,则会读到 HIGH 值。如果使用 digitalWrite(pin,LOW),将一个输出接口设置为 LOW,那么在使用 PinMode(pin,INPUT)切换到输入模式,上拉电阻不会启动。同理,启动上拉电阻的输入接口,切换到输出模式时,该引脚会被设置为 HIGH。
回复

使用道具 举报

大神点评2

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

关注0

粉丝11

帖子147

发布主题