http://www.taichi-maker.com/homepage/reference-index/arduino-code-reference/input_pullup/
理论
布线
Arduino 微控制器自带内部上拉电阻。如果你需要使用该内部上拉电阻,可以通过pinMode()将引脚设置为输入上拉(INPUT_PULLUP)模式。
示例中,我们将通过pinMode()语句将Arduino引脚2配置为输入模式。在此示例中,当开关闭合后,引脚5将获得低电平开关信号,引脚13旁的LED 将被点亮。反之,该LED为熄灭状态。
代码
/*
Input Pullup Serial
本示例展示如何使用pinMode(INPUT_PULLUP)。通过本程序,Arduino将读取引脚5
的数字输入并将结果显示在串口监视器中。
电路:
* 引脚5连接轻触开关,开关另一端接地
* 引脚13上安装有开发板内置LED
与使用pinMode(INPUT)不同,我们在使用pinMode(INPUT_PULLUP)时不需要外接上拉或下拉电阻。
开发板内置一个20K欧姆电阻,该电阻将引脚上拉到5V。开关在打开时,引脚读取到高电平。开关闭合后,引脚读取到低电平。
*/
void setup() {
//开始串口通讯
Serial.begin(9600);
//将引脚5设置为输入上拉模式
pinMode(5, INPUT_PULLUP);
pinMode(13, OUTPUT);
}
void loop() {
//将开关状态数值读取到变量中
int sensorVal = digitalRead(5);
//输出开关状态数值
Serial.println(LOW);
//请留意在上拉模式下,按钮的逻辑状态是反的。
//即:开关断开时引脚读取到高电平。开关被按下后引脚读取到低电平。
//按钮被按下后,引脚13连接的LED将被点亮。按钮没有按下时,LED熄灭。
//如果按钮没有按下,熄灭LED。否则,点亮LED
if (sensorVal == HIGH) { //按钮没有按下
digitalWrite(13, LOW); //熄灭LED
} else { //否则
digitalWrite(13, HIGH); //点亮LED
}
}
效果
按下L标识LED灯亮。 松开熄灭。