3.按键控制LED灯亮灭
实验现象:本实验通过一个按键来控制一个发光二极管的亮灭。按键按一下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灯亮灭相关推荐
- 用51单片机实现按键控制LED灯亮灭
用51单片机实现按键控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k1=P3^1;//位定义按键 void de ...
- 【tiny4412】按键控制led灯亮灭
前言:使用友善之臂tiny4412进行嵌入式学习,对于初学者而言并不是一件轻松事情,即使该平台已经存在很多年,网上也有很多分享,但由于官方文档相对还是不够全面,导致很多初学者遇到问题不知如何下手,如果 ...
- STM32按键控制LED灯亮灭(四)
编程要点: 1)使能GPIO端口时钟: 2)初始化GPIO目标引脚为输入模式(浮空输入): 3)编写简单测试程序,检测按键的状态,实现按键控制LED灯: bsp_led.h文件 #ifndef T_L ...
- ZYNQ学习笔记(五)---按键控制LED灯亮灭实验
这个实验其实很早就做了,但是由于这段时间自己一直在忙一些其他的事所以没有及时更新.今天抽出个空来更新一下.本次实验是关于按键控制LED亮灭.其中涉及到的内容有计数器.按键消抖以及一些简单的逻辑. 1. ...
- 按键控制led灯亮灭c语言原理,4个独立按键控制4个LED亮灭的单片机程序问题
本帖最后由 ll13536121668 于 2017-11-2 17:32 编辑 4只独立按键控制4只LED亮和灭,按下按键,LED亮,再按下,LED灭.因为我们很多都是按完按键,松开手LED才亮. ...
- CC2530的中断操作----按键控制led灯亮灭
中断使能主要有四个步骤: (1)使.EA 位为 1,开中断. (2)设置寄存器 IEN0.IEN1和IEN2中相应中断使能位为1. (3)如果需要,则设置P0.P1.P2各引脚对应的各中断使能位为1. ...
- 按键控制led灯亮灭c语言实验报告,通过按键控制LED灯的实验
通过查看开发板的核心电路原理图,加上查阅SUMSANG 2440的datasheed得知四个按键K1,K2,K3,K4对应GPF中的GPF1,GPF4,GPF2,GPF0.将这四个引脚配置为输入模式, ...
- 五项按键控制LED灯亮灭
实验需要:CubeMXkeil5STM32F051K8开发板 一.查看实物 1.点灯的引脚配置与文章[使用 CubeMX+Keil5+STM32F051K8 开发实现点亮一盏LED实验] (https ...
- 按键控制LED灯亮灭——基于arduino单片机
程序设计: 函数:digitalRead() 作用:用来读取数字串口状态,HIGH还是LOW (其实还有一种表达方式就是HIGH是"1",LOW是"0",只是H ...
最新文章
- 为什么java安装卡在满格_Java面试总结(JVM)
- hdu2594 简单KMP
- bindService初步了解
- Linux cp命令 拷贝文件
- SQLite 运算符(http://www.w3cschool.cc/sqlite/sqlite-operators.html)
- Java集合框架:Arrays工具类
- java)_Java NIO系列教程(一) Java NIO 概述
- 前端学习(1904)vue之电商管理系统电商系统之修改用户的操作
- 《零基础》MySQL UPDATE 更新(十四)
- C#.Net工作笔记010---c#中的静态扩展方法_可动态给string等_添加共通方法好用
- stimwoo大师解释MSDP与MBGP的关系
- 跟KingDZ学HTML5之八 HTML5之Web Save
- 山东大学高频电子线路实验二 高频功率放大实验详解
- PLC编程实现堆栈功能
- 如何解决Unity高版本使用EasyTouch5的问题
- MIPS单周期CPU
- android开发动态图ae,动影ae动态图片特效制作
- linux怎么进入etc目录,Linux 系统的/etc目录
- 彩票股票金融与运气之研究(二)-飘渺的希望
- mac如何在Finder中显示隐藏的文件或文件夹