【Arduino官方教程第一辑】示例程序 1-4 读取数字引脚

读取数字引脚

这个例子向你展示如何将Arduino或Genuino和电脑连接起来,并用USB串口连接来检测一个开关的状态。

完成本例所需的硬件设备

  • Arduino板Genuino板
  • 记忆开关、矩阵按键或拨动开关
  • 10kΩ电阻
  • 面包板连接线
  • 面包板

电路搭建

【Arduino官方教程第一辑】示例程序 1-4 读取数字引脚_第1张图片

用到三根线。红色和黑色的线分别连接到面包板两侧竖直的两排接口,以此扩展多个5V和GND的接口(红色一排->红色线->5V 蓝色一排->黑色线->GND)。第三根线从2号引脚连接到矩阵按键右上侧,矩阵按键右下侧引脚连接到一个下拉电阻(这里用10kΩ电阻),然后将下拉电阻接到GND。矩阵按键左下侧接到5V。

矩阵按键或者开关将在被按下时连通两侧。当矩阵按键处于开路时(未按下),矩阵按键两则并不会有连接。Arduino引脚这时连接的是GND(通过下拉电阻),代码中读出来就是LOW(数值0)。当矩阵按键处在闭路时(按下),两端连通,因而Arduino引脚就会被连接到5V,代码中读出来就是HIGH(数值1)。

如果你将数字引脚悬空(没接下拉电阻),LED可能会不规律的闪烁。这是因为此时Arduino引脚的输入一直在”漂移”。就是说,程序不能判定它是高电压还是低电压,故而只会随机的返回HIGH或LOW。这解释了这里我们为何需要下拉电阻。

电路原理图

【Arduino官方教程第一辑】示例程序 1-4 读取数字引脚_第2张图片

例程代码

在下列程序中,setup()所执行的第一件事情就是用以下代码打开板子和电脑的串口连接,波特率为9600:

Serial.begin(9600);

接着,初始化2号数字引脚,这个引脚将会从按钮获取输出来作为输入:

pinMode(2,INPUT);

现在setup函数已经执行完成,开始执行loop函数。
当按钮被按下,5V电压会让电流自由的流动在电路中。若松开,输入引脚将与10kΩ的下拉电阻相连。你需要了解:在Arduino眼里,这个引脚的状态要么是高电平(对应HIGH或数值1),要么是低电平(对应LOW或数值0)。并没有任何中间状态。这就是所谓的数字输入(digital input)大法。

loop函数中应做的第一件事情就是建立一个变量以保存从开关的状态。由于连接开关的引脚只会读出数值1或数值0,因而使用int类型较合适。我们把这个变量命名为sensorValue,并且让它与2号引脚的状态之间关联。使用以下代码就可轻松实现:

int sensorValue = digitalRead(2);

一旦板子读到了输入,就会将这个信息以十进制数的格式输出到电脑。你可以用这行代码解决:

Serial.println(sensorValue);

现在,当你打开Arduino IDE上的串口监视器,你就会看到一列0或1。0代表开关断开,1代表开关连接。

/* 读取数字引脚 读取引脚2上的值并且将结果输出到串口监视器。 本例程公开。 */

// 2号引脚有一个矩阵按键,给他命名:
int pushButton = 2;

// setup函数在上电或复位后运行一次:
void setup() {
  // 初始化串口,波特率9600:
  Serial.begin(9600);
  // 将2号引脚设置为输入模式:
  pinMode(pushButton, INPUT);
}

// loop函数持续不断的运行:
void loop() {
  // 读取输入引脚:
  int buttonState = digitalRead(pushButton);
  // 将按钮状态输出到串口监视器:
  Serial.println(buttonState);
  delay(1);        // 在读取操作前延时,以保证稳定
}

相关资料

setup()
loop()
pinMode()
digitalRead()
delay()
int
serial
DigitalPins
读取模拟信号、串口操作
Arduino工程的最小单元
点亮LED
LED亮度渐隐
读取模拟电压值

更新进程

日期 日志 译者
2016年4月16日 创建并翻译文档 唐家勋

译者:唐家勋
邮箱:[email protected]
QQ:649196486
转载请注明出处,一切只因为热爱。
希望您能指出宝贵意见,谢谢。

你可能感兴趣的:(扩展,硬件,usb,arduino)