数字 I/O

pinMode()

配置指定引脚的行为(‘INPUT’或’OUTPUT’)
语法:

pinMode(pin, mode)

参数:
pin:要设置模式的引脚
mode:INPUT, OUTPUT, 或INPUT_PULLUP
例子:

int ledPin = 13;                 // LED连接到数字引脚13
 
void setup()
{
  pinMode(ledPin, OUTPUT);      // 设置数字引脚为输出
}
 
void loop()
{
  digitalWrite(ledPin, HIGH);   // 点亮LED
  delay(1000);                  // 延时一秒
  digitalWrite(ledPin, LOW);    // LED灭掉
  delay(1000);                  // 延时一秒
}

digitalWrite()

描述:
给一个数字引脚写入HIGH或LOW
如果一个引脚已经使用pinMode()设置为OUTPUT模式,其他电压将被设置为相应的值。HIGH为5V(3.3V控制板上为3.3V),LOW为0V。
如果引脚配置为INPUT模式,使用digitalWrite()写入HIGH值,将使内部20K上拉电阻(详见数字引脚教程)。写入LOW将会禁用上拉。上拉电阻可以点亮一个LED让其微微亮,如果LED工作,但是亮度很低,可能是因为这个原因引起的。补救的办法是 使用pinMode()函数设置为输出引脚。

数字13号引脚难以作为数字输入使用,因为大部分的控制板上使用了一颗LED与一个电阻连接到他。如果启动了内部的20K上拉电阻,他的电压将在1.7V左右,而不是正常的5V,因为板载LED串联的电阻把他使他降了下来,这意味着他返回的值总是LOW。如果必须使用数字13号引脚的输入模式,需要使用外部上拉下拉电阻。

语法:

digitalWrite(pin, value)

参数:
Pin:要设置状态的引脚
Value:HIGH or LOW
例子:

int ledPin = 13;                 // LED连接到数字引脚13
 
void setup()
{
  pinMode(ledPin, OUTPUT);      // 设置数字引脚为输出
}
 
void loop()
{
  digitalWrite(ledPin, HIGH);   // 点亮LED
  delay(1000);                  // 延时一秒
  digitalWrite(ledPin, LOW);    // LED灭掉
  delay(1000);                  // 延时一秒
}

digitalRead()

描述:
读取指定数字引脚的值HIGH 或 LOW。
语法:

digitalRead(pin)

参数:
pin:你想读取的引脚号(int)
返回值:
HIGH或LOW。
例子:
将13脚设置为输入脚7脚的值。

int ledPin = 13; // LED 连接到数字引脚13号
int inPin = 7;   // 按钮连接到数字引脚7号
int val = 0;     // 定义变量存以储读值
 
void setup()
{
  pinMode(ledPin, OUTPUT);      // 将13号引脚设置为输出
  pinMode(inPin, INPUT);      //将7号引脚设置为输入
}
 
void loop()
{
  val = digitalRead(inPin);   // 读取输入引脚
  digitalWrite(ledPin, val);    // 将LED值设置为按钮的值
}
如果引脚悬空,digitalRead()会返回HIGH或LOW(随机变化)。 模拟输入脚能当做数字脚使用,参见A0,A1等。