2018-11-01
今天从arduino中文社区学习如何使用上拉电阻和下拉电阻感觉其中的一个程序很有趣,记录下来,后期使用:
先介绍下拉电阻:
下拉电阻,如下图,在Genuino101板子的2号引脚到GND之前,连接了一个阻值10K的电阻。如果没有该电阻,当未按下按键时,2号引脚会一直处于悬空状态,此时使用digitalRead()读取2号引脚状态,会得到一个不稳定的值(可能会高,也可能是低)。添加R1电阻到地就是为了稳定引脚电平,当引脚悬空时,就会识别为低电平。而这种将某节点通过电阻接地的做法,叫做下拉,这个电阻叫做下拉电阻。
示例程序:
const int buttonPin=2;
const int ledPin=13;
void setup()
{
pinMode(ledPin,OUTPUT);
pinMode(butterPin,INPUT);
}
void loop()
{
buttonState=digitalRead(buttonPin);
if(buttonStae==HIGH)
{
digitalWrite(ledPin,HIGH);
}
else
{
digitalWrite(ledPin,LOW);
}
}
然后介绍上拉电阻:
如下图,同下拉电阻一样,可以稳定I/O口电平,不同的是电阻连接到VCC,将引脚稳定在高电位。这种电阻叫做上拉电阻。
这里使用的是内部上拉电阻,也可以使用外部上拉电阻代替。稳定悬空引脚的电平所用电阻应该选择合适的阻值。
示例程序:
int buttonPin=2;
int ledPin=13;
int buttonState=0;
void setup()
{
pinMode(buttonPin,INPUT_PULLUP);
pinMode(ledPin,OUTPUT);
}
void loop()
{
buttonState=digitalRead(buttonPin);
if(buttonStae==HIGH)
{
digitalWrite(ledPin,LOW);
}
else
{
digitalWrite(ledPin,HIGH);
}
}
关于程序升级,完成一个新的控制效果。按一下按键,点亮LED;再按一下按键,熄灭LED。