按键控制LED

打印Hello world

控制LED

实验目的

通过一个按键控制一个发光二极管的亮和灭。按键按一下LED点亮,在按一下LED熄灭

原理图

在这里插入图片描述
在这里插入图片描述

  • 按键检测原理
    通过把arduino的数字I/O设置为输入状态来监控按键是否按下,当按键未按下时候因为有上拉电阻存在,读到的电平为HIGH,当按键按下时候因为按键引脚接地,所以读回来的电平为LOW,由此判断按键是否按下
  • 按键去抖动原理
    因为人手的机械动作是按键按下的时候会产生大约20ms的按键抖动,所以要在检测到低电平后延迟20ms再次检测可以起到去抖动的作用,用delay(20);
  • 松手检测原理
    松手检测原理就是程序无限循环等待按键松开,让程序不断的去检测I/O装填,如果恢复HIGH就跳出了循环,while(digitalRead(key) == 0);

代码编写

int led = 13;
int key = 2;
int key_num = 0;//按键值存放变量,不等于1说明有按键按下
void setup() {
  // put your setup code here, to run once:
  pinMode(led, OUTPUT); //定义led为输出引脚
  pinMode(key, INPUT_PULLUP); //定义key为带上拉输入引脚
}
void loop() {
  // put your main code here, to run repeatedly:
  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); //等待按键松手
    }
  }
}
/*
  函数的用法:
  digitalRead();
  函数的作用:读取数字引脚HIGH(高电平)或者LOW(低电平)
  语法:
    digitalRead(pin);
  参数:
    pin:被读取的引脚号码
  返回值:
    HIGH或者LOW
*/

有源蜂鸣器实验

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qq_45671732

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

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

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

打赏作者

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

抵扣说明:

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

余额充值