数字 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等。