下图是一个没有使用上拉电阻/下拉电阻的电路图:
在按键没有按下时,要读取的输入引脚没有连接到任何东西,这种状态就称为“悬空”。
由于附近引脚的电气噪声,从处于“悬空”状态的输入引脚读取到的数值会在高电平和低电平之间来回波动,得到一个不确定的值。
如果用串口监视器将 在没有使用上拉/下拉电阻的情况下 从一个数字引脚读取的输入打印出来,会得到图示的结果:
可以看到此时读取到的输入并不是一个确定的值。
如果换成从模拟引脚读取输入可以更明显地看到输入电压值的波动情况:
只有输入时要考虑上拉电阻和下拉电阻的问题,输出时不用考虑。
上拉电阻:将输入引脚通过一个10kΩ的电阻上拉到电源上
电路原理图:
在串口监视器中打印出的结果为:
使用Arduino I/O口内部上拉功能:
ATmega328P 每个I/O端口都内置了20kΩ上拉电阻(包括数字引脚和模拟输入引脚)(注意:没有内置下拉电阻)。
电路连接:
将按钮的一端接到GND,另一端接到输入引脚(这里是D2),如图所示:
代码:
void setup{
…
pinMode(2,INPUT_PULLUP);
…
}
下拉电阻:将输入引脚通过一个10kΩ的电阻下拉到地
电路原理图:
手机扫一扫
移动阅读更方便
你可能感兴趣的文章