Arduino与LabVIEW开发实战
上QQ阅读APP看书,第一时间看更新

1.3 数字输入/输出

1.3.1 数字I/O的函数库

Arduino数字I/O函数包括pinMode(pin,mode)、digitalWrite(pin,value)和digitalRead(pin,value),分别实现输入/输出设置、数字输出和数字输入的功能。

需要说明的是,数字I/O函数库的操作对象不仅仅是Arduino的数字I/O,还包括模拟输入的引脚。例如,在Arduino Uno控制器中,需要将模拟端口用作数字引脚,可以直接使用A0~A5,也可用D14~D19来指代模拟输入引脚A0~A5。

1.pinMode(pin,mode)

功能:将指定的引脚配置成输入或输出状态。

语法:pinMode(pin,mode)

参数:

pin:要设置模式的引脚。

mode:INPUT或OUTPUT。

注意 除了Arduino上的数字引脚外,模拟输入引脚也能用作数字引脚,如A0、A1。

2.digitalWrite(pin,value)

功能:从指定引脚写入HIGH或者LOW。

语法:digitalWrite(pin,value)

参数:

pin:引脚编号(如1,5,10,A0,A3)。

value:HIGH或LOW。

详细说明:

如果引脚被pinMode()配置为OUTPUT模式,其引脚上的电压将被设置为相应的值,HIGH为5V(3.3V控制板上为3.3V),LOW为0V。

如果引脚被pinMode()配置为INPUT模式,使用digitalWrite()写入HIGH值,将使能内部20kΩ上拉电阻,写入LOW将会禁用上拉。

注意 Arduino控制板上的数字13号引脚一般不用作数字输入,因为大部分的控制板上使用了一个LED与一个电阻连接到地。如果启动了内部的20kΩ上拉电阻,它的电压将在1.7V左右,而不是正常的5V,因为板载LED串联的电阻使电压降了下来,这意味着返回的值总是LOW。

3.digitalRead(pin)

功能:读取指定引脚的值,HIGH或LOW。

语法:digitalRead(pin)

参数:

pin:指定的引脚。

返回值:HIGH或LOW。

注意 如果引脚悬空,digitalRead()会返回HIGH或LOW(随机变化)。

1.3.2 实验:百变流水灯

1.实验目的

通过Arduino Uno的数字引脚D2~D7控制6个LED,按照我们的编程形成流水灯,学习pinMode(pin,mode)和digitalWrite(pin,value)的使用。

2.硬件连接

依次将6个LED的阳极(长管脚)通过220Ω的限流电阻接至Arduino Uno的D2~D7,阴极(短管脚)直接接至GND。硬件连接图如图1-25所示。

图1-25 流水灯硬件连接图

3.软件设计

通过数字输出digitalWrite(pin,value)对多个LED进行亮灭控制,从而形成流水灯,程序如代码清单1-2所示。

代码清单1-2:流水灯程序代码

int lowestPin = 2;                 // 定义数字引脚2作为流水灯起始引脚
int highestPin = 7;               // 定义数字引脚7作为流水灯结束引脚
void setup() {
  // 将数字引脚D2~D7初始化为输出
  for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++) { 
    pinMode(thisPin, OUTPUT);                // 设置引脚为输出模式
  }
}
void loop() {
  // 由低到高依次点亮LED,延时1秒,熄灭LED
  for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++) { 
    digitalWrite(thisPin,HIGH);
    delay(1000);
    digitalWrite(thisPin,LOW);
  }
// 由高到低依次点亮LED,延时1秒,熄灭LED
  for (int thisPin =highestPin; thisPin <= lowestPin; thisPin--) { 
    digitalWrite(thisPin,HIGH);
    delay(1000);
    digitalWrite(thisPin,LOW);
  }
}

1.3.3 实验:“听话”的灯

1.实验目的

通过Arduino Uno的数字引脚D2读取按键,实现对D13上LED的控制。学习pinMode(pin,mode)、digitalWrite(pin,value)和digitalRead(pin)的使用。

2.硬件连接

将按键的一端通过220Ω的下拉电阻接至GND,另一端直接接至+5V,Arduino Uno的D2接至按键接有下拉电阻[1]由于下拉电阻的一端接至地端,因而叫作下拉电阻,即将电路节点的电平向低方向(地)拉。下拉电阻的主要作用是在电路驱动器(此处为按键)断开时给线路(节点)以一个固定的低电平。的一端,硬件连接图如图1-26所示。

图1-26 “听话”的灯硬件连接图

3.软件设计

通过数字输出digitalWrite(pin,value)和数字输入digitalRead(pin),利用按键控制LED的亮灭,程序如代码清单1-3所示。

代码清单1-3:“听话”的灯程序代码

int led = 13;                                                     // 定义数字引脚13作为LED的控制引脚
int key = 2;                                                      // 定义数字引脚2作为按键的读取引脚
int t = 0;                                                          // 定义状态变量,记录按键状态
// 当Arduino重启之后,只执行一次
void setup() { 
  pinMode(led, OUTPUT);                            // 初始化引脚13作为输出
  pinMode(key, INPUT);                              // 初始化引脚2作为输入
}
// 此部分一直循环执行 void loop() { t=digitalRead(key); // 读取按键状态 if(t==1){ // 判断按键是否为闭合状态 digitalWrite(led, HIGH); // 闭合状态,点亮LED }else digitalWrite(led, LOW); // 断开状态,熄灭LED }