【Arduino基础】按键控制LED灯亮灭实验

实验现象
当按键按下时,LED亮,按键没有按下时,LED不亮。
实验说明
1.先完成按键功能
2.再完成小灯点亮功能
3.二者电路务必分开,最后实现逻辑功能。
理论学习
按键检测原理:通过把Arduino的数字IO设置为输入状态来监控按键是否按下,当按键未按下的时候因为有上拉电阻的存在,读到的电平为HIGH,当按键按下时候因为按键引脚接地,所以读回来的电平为LOW,由此判断按键是否按下。
按键去抖动原理:因为人手的机械动作使按键按下时候会产生大概20ms左右的按键抖动,如果Arduino在这20ms内去检测IO口的电平很可能会检测出来不稳定的信号。因此,在检测到低电平后延迟20ms再检测可以起到软件去抖动的作用。
松手检测原理:所谓的松手检测就是程序无线循环等待按键松开,即让程序不停的去检测IO状态,如果恢复了HIGH就跳出循环。
实验准备
arduino主板-1
面包板-1
数据线-1
Led灯-1
220Ω电阻-1
按键-1
按键帽-1(可省略)
跳线若干
连接电路
接线说明
按键一脚接GND,一脚接数字引脚2,无需电阻; LED灯长脚接数字引脚5,需要连220Ω的电阻,短脚接GND。
实验代码

#define LED 5
#define KEY 2

int KEY_NUM = 0;      //按键键值存放变量

void setup()
{
  pinMode(LED,OUTPUT);      //定义LED为输出引脚
  pinMode(KEY,INPUT_PULLUP);    //定义KEY为带上拉输入引脚
}

void loop()
{   
 ScanKey();        //按键扫描程序,当按键按下时候,该子程序会修改KEY_NUM的值
 if(KEY_NUM == 1)      //是否按键按下,如果<span style="font-family:Arial, Helvetica, sans-serif;">ScanKey函数扫描到按键就会设置KEY_NUM值为1</span>
  {   
    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); //等待按键松手
    }
  }
}

实现效果
在这里插入图片描述
在这里插入图片描述
相关文章
【Arduino基础】LED灯闪烁实验

  • 9
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏小泡泡#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值