在《Arduino入门教程--第四课--按钮控制的LED延时开关》中,我们学习了按键控制LED灯,当时我们在按键下拉了一个10K的电阻来确保按键稳定,不会误触发
有人会问,如果我们去掉这个下拉电阻,有没有办法达到和之前一样的效果呢?
答案是肯定的。
ATmega328P芯片内部其实有上拉的功能,我们可以使用ATmega328P内部的上拉功能替代外部上拉。
ATmega328P Datasheet中有内部上拉的结构介绍,如下图:
介绍一下上拉电阻
在数字电路中,上拉电阻(英语:Pull-up resistors)是当某输入端口未连接设备或处于高阻抗的情况下,一种用于保证输入信号为预期逻辑电平的电阻元件。他们通常在不同的逻辑器件之间工作,提供一定的电压信号。
上拉电阻的作用
在上拉电阻所连接的导线上,如果外部组件未启用,上拉电阻将“微弱地”将输入电压信号“拉高”。当外部组件未连接时,对输入端来说,外部“看上去”就是高阻抗的。这时,通过上拉电阻可以将输入端口处的电压拉高到高电平。如果外部组件启用,它将取消上拉电阻所设置的高电平。通过这样,上拉电阻可以使引脚即使在未连接外部组件的时候也能保持确定的逻辑电平。
本次实验你将可能会用到如下器件
器件 数量
5MM红色LED 1
220Ω电阻 1
超大微动开关 1
标准面包板 1
Arduino mango控制板 1
面包板专用跳线盒 1
引脚整形器 1
面包板的接线图如下
可以看到,按键部分去掉上拉电阻后将变的非常简单
这个程序的核心就是下面这句代码
定义了2号引脚为INPUT_PULLUP模式意味着该引脚为输入模式,并且被拉高,这就是为什么按键接到了GND
当按键按下时,2号管脚变为GND,这样就完成了按键的功能
因为ATmega328P单片机管脚默认是高电平,所以我们通常设定低电平有效,这样就可以避免误触发
提示:ATmega328P仅仅只有内上拉功能,没有下拉功能哦!
大家如果有什么好的建议和想法,可以告诉我,QQ-3241299213(不要告诉其他人哦,保密!) ICKey社区欢迎大家踊跃发表自己的想法!
|