计算机系统应用教程网站

网站首页 > 技术文章 正文

ESP8266非阻塞事件处理 我们来看一下这个非阻塞延时的代码

btikc 2024-10-25 10:51:12 技术文章 13 ℃ 0 评论

LED闪烁时怎么接收按键事件?

LED闪烁时怎么能接收按键事件?看一下非阻塞延时的代码,这是一个ESP8266的开发板。什么叫非阻塞?一般来说在使用delay方法以后会挡住所有事件的输入。这里看到的是LED闪烁的代码,所谓的LED闪烁就是每隔一定时间变亮或者熄灭。

一般最常见的就使用delay方法,但是delay方法设置了以后,比如delay一秒钟,这一秒钟什么事都不用干,就算用户按了这个按键也没有任何效果,这可能不是想要达到的目标,所以使用了另外一种写法,整个代码没有delay,这样就不妨碍在读取这个按键按下的值。

看一下相关代码。

·首先是一些引脚的定义,懒得记,就是用define来定义一下引脚。

·这里有一个LED默认的电平,还有LED闪烁的间隔时间,也就是原来写在delay里面的时间,这里就是最近的执行时间,还有按键的默认状态。

·在setup这里设置D1,也就是按键连接的引脚为上拉输入,INPUTPULLUP。

·再设置LED为输出,也就是连接的D8引脚为输出,并且设置波特率。设置这个主要是为了跟电脑进行通讯,打印一些信息。

·再看到循环执行区,这里有一个代码是读取系统运行的时间,单位是毫秒,减去当前的最近执行时间。如果大于间隔时间,判断一下是否已经间隔了1秒。如果是大于1秒就执行里面的内容,如果间隔小于1秒就不执行,这样就起到延时的效果。

·如果执行要改变LED的状态,要设置D8引脚为数字输出,要把当前运行时间赋予到最近的执行时间里面,这样下一次再循环执行这里的时候就不会马上进入执行区域。

·接着看下面,这里就正常的读取按键的数值,如果它跟最近的数字不一样就打印出来,在窗口输出可以看到这些0101的信息,在这里,没有处理按键抖动相关的逻辑,这里只是表示通过了非阻塞的代码处理方法,让按键可以读取。如果不使用这个方法,这里直接使用delay,可能delay的一秒钟以内,按键按了多少次都没有任何的反应。整个逻辑就是这样的。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表