程序设计:
函数:digitalRead()
作用:用来读取数字串口状态,HIGH还是LOW
(其实还有一种表达方式就是HIGH是“1”,LOW是“0”,只是HIGH/LOW更直观)。函数需要一个传递参数——LED,这里需要读取LED信号。
硬件连接:
按键结构图
下拉电阻:把电压往下拉,降低电压。
按键作为开关,当输入电路状态为HIGH的时候,电压要尽可能接近5V;输入电路状态为LOW的时候,电压要尽可能接近0。如果不能确保状态接近所需电压,这部分电路就会产生电压浮动。所以,我们在按键那里接了一个电阻来确保一定达到LOW,这个电阻就是所谓的下拉电阻。
未接下拉电阻的电路,按键没被按下时,输入引脚就处于悬空状态。空气会使该引脚电压产生浮动,不能确保是0。然而接了下拉电阻的电路,当按键没被按下时,输入引脚通过电阻接地,确保电压为0,不会产生电压浮动现象。
实验现象:
代码
#define LED 13
#define KEY 2
int KEY_NUM = 0; //按键键值存放变量,不等于1说明有按键按下
void setup()
{
pinMode(LED,OUTPUT); //定义LED为输出引脚
pinMode(KEY,INPUT_PULLUP); //定义KEY为带上拉输入引脚
}
void loop()
{
ScanKey(); //按键扫描程序,当按键按下时候,该子程序会修改KEY_NUM的值
if(KEY_NUM == 1) //是否按键按下
{
digitalWrite(LED,!digitalRead(LED)); //LED的状态翻转
}
}
void ScanKey() //按键扫描程序
{
KEY_NUM = 0; //清空变量
if(digitalRead(KEY) == LOW) //有按键按下
{
delay(20); //延时去抖动
if(digitalRead(KEY) == LOW) //有按键按下
{
KEY_NUM = 1; //变量设置为1
while(digitalRead(KEY) == LOW); //等待按键松手
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)