Oh!Coder

Coding Life

好玩的Arduino-按键开关

| Comments

Hi,大家好!今天我们正式学习一个新的元器件,它就是按键开关!说是正式学习,其实之前我们早就已经接触过,而且还正确的连接过它的电路呢!有印象么?在之前的获取输入数字信号那一节!这一次与它相遇,我们要正式学习如何使用它控制一盏神灯!

既然之前我们已经接触过,想必这次学起来要简单的多啦!

好!废话不多说,先看一下这次都需要做哪些准备。

硬件方面

arduino-button-parts

图片来源:Arduino电路配件

具体包括如下:

  • Arduino UNO电路板(1块)
  • 面包板(1块)
  • 10k电阻(1个)
  • 按键开关(1个)
  • 面包线(3根)

咦?怎么没发现硬件准备中的LED神灯?问的好!这次偷偷的告诉你一个小秘密,其实Arduino UNO电路板自身就带有一盏神灯,这盏神灯对应的针脚号为13。仔细看上图中Arduino UNO电路板,在电路板中上方的位置,差不多正对GND标示和数字13的正下方,有一个标号为L的白色长方形,没错!那就是这盏神灯。这盏神灯默认的信号输入针脚为数字信号13号针脚。

因为这次我们的学习重点是按键,所以为了简化电路的连接,我们默认就使用Arduino UNO电路板自带的那盏神灯啦!

好,下面是软件的准备!

软件方面

Arduino官方提供的IDE。不必多说!

连接电路

arduino-read-bottom

图片来源:Arduino连接开关按键电路示意图

电路的连接,在之前的获取输入数字信号那节我们已经做过,这里除了需要注意Arduino UNO电路板自带的那盏神灯以外,没有新的内容。

下面是最后一步!

添加几行代码

最后一个环节,就是让我们添加几行驱动硬件的代码。

首先,新建一个项目窗口。

arduino-ide-new

图片来源:Arduino官方IDE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// 这里的输入和输出是针对Arduino电路板而言
// 定义按键输入针脚号为2号针脚
const int buttonPin = 2;
// 定义LED输入针脚号为13号针脚
// 注:此处我们使用的LED神灯是Arduino UNO电路板自带,
// 此神灯对应的针脚号默认为13,此数值不得随意更改,
// 所以这里定义的数值13是为了和默认值相对应。
const int ledPin =  13;
// 定义按键状态变量初始值为0
int buttonState = 0;

// 对Arduino电路板或相关状态进行初始化方法
void setup() {
  // 设置ledPin端口为输出端口
  pinMode(ledPin, OUTPUT);
  // 设置buttonPin端口为输入端口
  pinMode(buttonPin, INPUT);
}

// 系统调用,无限循环方法
void loop() {
  // 读取按键状态
  buttonState = digitalRead(buttonPin);

  // 检查按键状态,
  // 如果为HIGH,
  // 则点亮LED神灯,
  // 否则熄灭LED神灯。
  if (buttonState == HIGH) {
    // 点亮LED神灯
    digitalWrite(ledPin, HIGH);
  } else {
    // 熄灭LED神灯
    digitalWrite(ledPin, LOW);
  }
}

嗯,全部代码就是这些!所调用的方法我们应该全都已经见过,这里并没有新的面孔出现。可能只有一点是新的,那就是我们这次使用的LED神灯,是Arduino UNO电路板自带的,此盏神灯默认对应的针脚号为13,是不能随意更改的,所以我们要想控制此神灯,需要向13号针脚输入数字信号,这就是为什么上面我们定义LED针脚号的时候,数字为13的原因。也就是说,只有向13号针脚输入信号,才可以控制这盏神灯的亮和灭。

arduino-menu

图片来源:Arduino官方IDE的文件编辑菜单选项

点击上图中标有向右指向的箭头图标,将代码烧入Arduino UNO电路板。成功之后,试试看点击开关按键,此时能否点亮和熄灭电路板上的那盏神灯!如果烧入失败,请检查是代码编译错误,还是将代码烧入电路板的过程中出现错误?如果是代码错误,请认真核对代码,如果是烧入代码时出现的错误,可以点击工具栏中的Tools,查看Port的选项,是否选中的是usbmodem连接模式。

总结

通过这次学习,我们正式的了解如何使用按键进行控制。顺便还了解了一盏Arduino UNO自身就有的LED神灯,对Arduino UNO电路板又增进了一些认识。这次编写的代码中,没有出现新的面孔,电路方面所涉及到的只有数字信号,总而言之呢,可以看作是对我们之前所学进行了巩固。

下期预告

虽然通过这次学习,我们知道了如何用按键开关控制其他电器元件,比如LED神灯。由于电路的一些固有特性,美中不足,此时按键开关还有一些小问题。下一次,我们将修复这个问题,完善按钮开关,让其达到完美的状态!

Comments