




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.3Mini台灯--数字大按钮模块硬件连接
数字大按钮->数字2
数字食人鱼红色LED发光模块->数字13
2025/2/7Arduino零基础C语言编程15.3Mini台灯--数字大按钮模块输入代码样例代码3:
//小台灯
intbuttonPin=2; //按钮连接到数字2
intledPin=13; //LED连接到数字13
intledState=HIGH; //ledState记录LED状态
intbuttonState; //buttonState记录按键状态
intlastButtonState=LOW; //lastbuttonState记录按键前一个状态
longlastDebounceTime=0;
longdebounceDelay=50; //去除抖动时间
voidsetup(){pinMode(buttonPin,INPUT);pinMode(ledPin,OUTPUT);
digitalWrite(ledPin,ledState);
}
2025/2/7Arduino零基础C语言编程2voidloop(){//reading用来存储buttonPin的数据intreading=digitalRead(buttonPin);//一旦检测到数据发生变化,记录当前时间
if(reading!=lastButtonState){lastDebounceTime=millis();
}等待50ms,再进行一次判断,是否和当前button状态相同如果和当前状态不相同,改变button状态同时,如果button状态为高(也就是被按下),那么就改变led的状态if((millis()-lastDebounceTime)>debounceDelay){if(reading!=buttonState){buttonState=reading;if(buttonState==HIGH){ledState=!ledState;}}}digitalWrite(ledPin,ledState);//改变button前一个状态值lastButtonState=reading;}下载完代码,按下按钮,灯点亮。再按下按钮,灯熄灭。是不是很像个小台灯?5.3Mini台灯--数字大按钮模块硬件分析(数字输入—数字输出)很明显,大按钮是输入设备,LED是输出设备。和前面感应灯类似,也是一个数字输入控制一个数字输出。只是形式与代码有所不同。
2025/2/7Arduino零基础C语言编程35.3Mini台灯--数字大按钮模块代码回顾由硬件分析可以看出,按键是输入设备,LED是输出设备。pinMode(buttonPin,INPUT);pinMode(ledPin,OUTPUT);
通过digitalWrite()读取按键的状态:intreading=digitalRead(buttonPin);
通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖,
抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到,如下图所示:
2025/2/7Arduino零基础C语言编程45.3Mini台灯--数字大按钮模块代码回顾
消抖是为了避免在按键按下或是抬起时电平剧烈抖动带来的影响。按键的消抖,可用硬件或软件两种方法。一般来说,会使用软件方法去抖,即检测出键闭合后执行一个延时程序,5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。软件消抖的方法是不断检测按键值,直到按键值稳定。实现方法:假设未按键时输入1,按键后输入为0,抖动时不定。可以做以下检测:检测到按键输入为0之后,延时5ms~10ms,再次检测,如果按键还为0,那么就认为有按键输入。延时的5ms~10ms恰好避开了抖动期。一旦检测到读取的数据发生变化,通过millis()函数记下时间:if(reading!=lastButtonState){lastDebounceTime=millis();}
2025/2/7Arduino零基础C语言编程55.3Mini台灯--数字大按钮模块代码回顾millis()是一个函数,该函数是Arduino语言自有的函数,它返回值是一个时间,Arduino开始运行到执行到当前的时间,也称之为机器时间,就像一个隐形时钟,从控制器开始运行的那一刻起开始计时,以毫秒为单位。
再等待50ms,再进行一次判断,是否和当前button状态相同。如果和当前状态不相同,改变button状态。同时,如果button状态为高(也就是被按下),那么就改变LED的状态。
if((millis()-lastDebounceTime)>debounceDelay){if(reading!=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五贸易委托代理合同
- 二零二五版营业房租赁简单合同范例
- 全新电影拍摄保密协议二零二五年
- 二零二五托老院入住服务协议书
- 营业执照借用协议书
- 二零二五全新减免物业费协议
- 餐饮联营合作协议二零二五年
- 二零二五各国对于电子合同法律规定
- 集体土地的租赁合同
- 协议离婚和起诉哪个好
- 2024年河南省中职英语对口高考试题
- 政治-山东省潍坊市2025届高三2月开年诊断调研监测考试试题和答案
- 公司清明节前安全教育
- 2025年湖北咸宁通城城市发展建设投资集团有限公司招聘笔试参考题库附带答案详解
- 石油开发地质学-第5章-圈闭和油气藏
- 英语语法-时间介词-练习题(带答案)
- 激光清洗机项目可行性研究报告申请备案
- 2025年山东出版集团招聘笔试参考题库含答案解析
- 2025年济南铁路局招聘笔试参考题库含答案解析
- 杂交水稻育种技术
- 第9课《鱼我所欲也》作业设计-部编版语文九年级下册
评论
0/150
提交评论