按键是重要的人机交互的工具,可以通过按键将数据输入给计算机(此处为Arduino),让Arduino按照人所想的方式工作,或者输入Arduino的一些工作参数。LED灯可以作为程序调试过程中的指示灯,让调试者清楚地知道程序现在运行到哪一步,从而可以很快的找出程序的问题所在。
在上一节的学习笔记《Arduino UNO实验板设计》中,我们带着大家学会了如何使用Protues仿真软件构建出软件Arduino的实验板,并在软件Arduino UNO实验板上验证了闪烁灯的例子,下面我们接着第一节的学习笔记,继续下面的学习,让LED灯接受我们的控制,像平时我们打开和关闭房间的节能灯一样方便。
首先,我们需要打开上次的Arduino UNO实验板,如图1所示。从下图中,我们可以看到Arduino UNO的核心ATmega328P单片机,绿色LED灯LED-GREEN,串口通讯接口COMPIM,这个构成了Arduino的最小系统。
图1 Arduino UNO实验板
下面我们要在Arduino UNO实验板上添加按键,在元器件选择框中输入“BUTTON”,如图2所示。选择上面一个按键,并点击OK将其添加至元器件栏中。
图2 "BUTTON"按键选择
从元器件栏中将按键放置到Arduino UNO实验板的合适位置,这里我们选择数字口8,所以放置在其附近,并放置一个10KΩ的电阻,如图3所示。将按键的一端连接至数字口8,一端连接至+5V电源端,电阻的一端连接至数字口8,一端接至低端,构成一个下拉电阻【注】,连接之后的图如图4所示。
【注】下拉电阻的一端接至低端,因而叫做下拉电阻,即将电路节点的电平向低方向(地)拉。下拉电阻的主要作用是在电路驱动器(此处为按键)断开时给线路(节点)以一个固定的低电平。【文献1】

图3 在Arduino UNO实验板上放置按键和电阻
图4 连接好按键和电阻的Arduino UNO实验板
最后,还需要完成Arduino软件设计,验证我们的设计是否可行。先打开ArduinoIDE自带的例子,如图5所示。
图5 打开Arduino IDE的BUTTON示例
我们要对Arduino IDE自带“BUTTON”例子进行修改,将const int buttonPin = 2;更改为const int buttonPin = 8;因为我们的按键连接在数字口8上面,更改之后的程序如下所示。
// set pin numbers:
const int buttonPin = 8; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}
void loop(){
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}
将更改之后的程序,编译通过之后,在Protues仿真环境中单击ATmega328P单片机,将Arduino IDE生成的HEX文件调入到Arduino UNO实验板中运行。
当按键断开时,LED熄灭,如图6所示;当按键闭合时,LED点亮。如图7所示。
图6 按键断开时,LED熄灭
图7 按键闭合时,LED点亮
我们对上面的设计进行一些更改,将按键和10KΩ电阻的GND和+5V交换位置,点击GND弹出更改框为图8所示。将GND改为+5V,+5V改为GND,实验板即变为图9所示。10KΩ的电阻也由下拉电阻变为上拉电阻。【注】
【注】上拉电阻就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。【文献2】
图8 更改电源端与地端
图9 更改之后的实验板
当我们进行仿真时,出现了与前面相反的效果:当按键断开时,LED点亮,如图10所示;当按键闭合时,LED熄灭,如图10所示。这就是上拉电阻与下拉电阻的作用。
图10 当按键断开时,LED点亮
图11 当按键闭合时,LED熄灭
参考文献:
文献1:http://baike.baidu.com/view/1546676.htm
文献2:http://baike.baidu.com/view/1106477.htm