实验现象:本实验通过一个按键来控制一个发光二极管的亮灭。按键按一下LED点亮。再按一下LED熄灭。

理论学习

该实验主要难点

如何扫描按键的状态?

如何防抖动?

 原理讲解

按键检测原理:通过把Arduino的数字IO设置为输入状态来监控按键是否按下,当按键未按下的时候因为有上拉电阻的存在,读到的电平为HIGH,当按键按下时候因为按键引脚接地,所以读回来的电平为LOW,由此判断按键是否按下。
   按键去抖动原理:因为人手的机械动作使按键按下时候会产生大概20ms左右的按键抖动,如果Arduino在这20ms内去检测IO口的电平很可能会检测出来不稳定的信号。因此,在检测到低电平后延迟20ms再检测可以起到软件去抖动的作用。
   松手检测原理:所谓的松手检测就是程序无线循环等待按键松开,即让程序不停的去检测IO状态,如果恢复了HIGH就跳出循环。
代码为while(diitalRead(KEY)==0);

程序代码

#define LED 13
#define KEY 2int KEY_NUM = 0;          //按键键值存放变量void setup()
{pinMode(LED,OUTPUT);           //定义LED为输出引脚pinMode(KEY,INPUT_PULLUP);      //定义KEY为带上拉输入引脚
}void loop()
{ScanKey();             //按键扫描程序,当按键按下时候,该子程序会修改KEY_NUM的值if(KEY_NUM == 1)           //是否按键按下,如果ScanKey函数扫描到按键就会设置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;           //变量设置为1while(digitalRead(KEY) == LOW);   //等待按键松手}}
}

3.按键控制LED灯亮灭相关推荐

  1. 用51单片机实现按键控制LED灯亮灭

    用51单片机实现按键控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k1=P3^1;//位定义按键 void de ...

  2. 【tiny4412】按键控制led灯亮灭

    前言:使用友善之臂tiny4412进行嵌入式学习,对于初学者而言并不是一件轻松事情,即使该平台已经存在很多年,网上也有很多分享,但由于官方文档相对还是不够全面,导致很多初学者遇到问题不知如何下手,如果 ...

  3. STM32按键控制LED灯亮灭(四)

    编程要点: 1)使能GPIO端口时钟: 2)初始化GPIO目标引脚为输入模式(浮空输入): 3)编写简单测试程序,检测按键的状态,实现按键控制LED灯: bsp_led.h文件 #ifndef T_L ...

  4. ZYNQ学习笔记(五)---按键控制LED灯亮灭实验

    这个实验其实很早就做了,但是由于这段时间自己一直在忙一些其他的事所以没有及时更新.今天抽出个空来更新一下.本次实验是关于按键控制LED亮灭.其中涉及到的内容有计数器.按键消抖以及一些简单的逻辑. 1. ...

  5. 按键控制led灯亮灭c语言原理,4个独立按键控制4个LED亮灭的单片机程序问题

    本帖最后由 ll13536121668 于 2017-11-2 17:32 编辑 4只独立按键控制4只LED亮和灭,按下按键,LED亮,再按下,LED灭.因为我们很多都是按完按键,松开手LED才亮. ...

  6. CC2530的中断操作----按键控制led灯亮灭

    中断使能主要有四个步骤: (1)使.EA 位为 1,开中断. (2)设置寄存器 IEN0.IEN1和IEN2中相应中断使能位为1. (3)如果需要,则设置P0.P1.P2各引脚对应的各中断使能位为1. ...

  7. 按键控制led灯亮灭c语言实验报告,通过按键控制LED灯的实验

    通过查看开发板的核心电路原理图,加上查阅SUMSANG 2440的datasheed得知四个按键K1,K2,K3,K4对应GPF中的GPF1,GPF4,GPF2,GPF0.将这四个引脚配置为输入模式, ...

  8. 五项按键控制LED灯亮灭

    实验需要:CubeMXkeil5STM32F051K8开发板 一.查看实物 1.点灯的引脚配置与文章[使用 CubeMX+Keil5+STM32F051K8 开发实现点亮一盏LED实验] (https ...

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

    程序设计: 函数:digitalRead() 作用:用来读取数字串口状态,HIGH还是LOW (其实还有一种表达方式就是HIGH是"1",LOW是"0",只是H ...

最新文章

  1. 为什么java安装卡在满格_Java面试总结(JVM)
  2. hdu2594 简单KMP
  3. bindService初步了解
  4. Linux cp命令 拷贝文件
  5. SQLite 运算符(http://www.w3cschool.cc/sqlite/sqlite-operators.html)
  6. Java集合框架:Arrays工具类
  7. java)_Java NIO系列教程(一) Java NIO 概述
  8. 前端学习(1904)vue之电商管理系统电商系统之修改用户的操作
  9. 《零基础》MySQL UPDATE 更新(十四)
  10. C#.Net工作笔记010---c#中的静态扩展方法_可动态给string等_添加共通方法好用
  11. stimwoo大师解释MSDP与MBGP的关系
  12. 跟KingDZ学HTML5之八 HTML5之Web Save
  13. 山东大学高频电子线路实验二 高频功率放大实验详解
  14. PLC编程实现堆栈功能
  15. 如何解决Unity高版本使用EasyTouch5的问题
  16. MIPS单周期CPU
  17. android开发动态图ae,动影ae动态图片特效制作
  18. linux怎么进入etc目录,Linux 系统的/etc目录
  19. 彩票股票金融与运气之研究(二)-飘渺的希望
  20. mac如何在Finder中显示隐藏的文件或文件夹

热门文章

  1. 伟大创意检验10要 - 如何检验你的创意是否适合支撑你创业
  2. NLPKGOthers会议投稿
  3. 文件名后缀查看及修改
  4. 交叉编译基础知识总结(1)
  5. Python 生成8位必含数字、大小写字母的字符串(密码)
  6. 谷安天下2013年6月CISA考前辅导 第一季
  7. 产品体验官:Tapdata Cloud Oracle 数据库实时同步(详细版)
  8. YUM仓库服务与PXE网络装机无人值守
  9. WebIDE:在浏览器中写代码的时代即将来临?
  10. 自动化测试工具Airtest的使用