按键控制LED灯亮灭——基于arduino单片机

程序设计:

函数: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);	//等待按键松手
    }
  }
}

  • 4
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值