每日热议!【产品应用】基于EsDAMPC-ZC1快速实现—按键高级应用

2023-06-01 14:00:32 来源:面包芯语

简介

按键相关节点介绍


(资料图片)

1.button节点

显示名称:在流图显示上所展示的名称,用户可自行修改;

对应的GPIO编号:按键信号引脚所接的引脚编号;

触发条件:可选择是下降沿触发(fall),还是上升沿触发(up),具体模式由用户的硬件模块电路的实现方式决定;

输出变量:在按键按下时输出on,松开时输出off,在初始化完成以及按钮状态发生改变的时候会输出当前状态。

2.button_expand节点

应用案例

硬件连接

* 该模块为下降沿触发,故流图中的button节点,选择下降沿触发方式。

1.1实验简介

本实验使用 MPC-ZC1 板载的红色LED、绿色LED 作为实验结果指示灯。本实验中,通过LED的不同显示状态来指示不同的按键事件,对应关系如下表。

操作

事件

效果

单击

开启红灯

led灯中红灯亮

1.2流图设计

1.3.1 单击名称节点

cycle mode(trigger):用户在周期时间内按下指定次数的按键时,该节点将触发输出;

周期时间为800ms:表示一次触发实限为800ms,及800ms内按下指定次数即可触发该节点;

冷却时间为1200ms:表示该节点被触发后,需要的冷却时间1200ms,该时间内再次按下将不会触发节点,且节点冷却时间重新计算;

按键次数为1:表示在指定周期且非冷却时间内按下1次,即可触发该节点;

主题和显示名称:用户可自行配置,主题为传递给下一个节点的msg.topic参数,显示名称为在流图上节点显示的名字。

该节点主要实现功能为,在800ms周期内,按键被按下一次,节点触发,冷却时间1200ms满后可再次触发。

1.3.2 双击节点

* 该节点配置与单击名称节点同理,区别在于按键次数修改为2,即同一周期内只按下两次,即可触发,且主题配置为双击,周期时间配置为1200ms,冷却时间配置为800ms。用户可参照上一小节cycle mode(trigger)模式实验-单击名称节点配置讲解。

1.3.3 三击节点

* 该节点配置与单击名称节点同理,区别在于按键次数修改为3,即同一周期内只按下三次,即可触发,且主题配置为三击,周期时间配置为1600ms,冷却时间配置为400ms。用户可参照上一小节cycle mode(trigger)模式实验-单击名称节点配置讲解。

1.4fscript节点

1.4.1 开启红灯节点

依次对按键进行单击、双击和三击操作。

2. continuous mode(trigger)模式实验

本实验将与cycle mode(trigger)模式实验所实现的功能相同,不同点在于使用的button_expand节点的操作模式为continuous mode(trigger)。

2.2流图设计

*同cycle mode(trigger)模式实验流图。

2.3button_expand节点

2.3.1 单击节点

continuous mode(trigger)模式:用户连续按下按键,且每次按键的时间小于设定时间间隔,将进行累加,直至超出设定间隔时,统计按键次数,若符合设定次数,该节点将触发输出;

动作间隔时间为500ms:表示用户前一次按下与后一次按下间隔时间,如果小于500ms,则进行计数。如果大于500ms时,则停止计数;

按键次数为1:当停止计数时,计数次数为1,则触发该节点;

* 该节点配置与单击名称节点同理,区别在于按键次数修改为2,主题配置为双击。用户可参照上一小节continuous mode(trigger)模式实验-单击名称节点配置讲解。

2.3.3三击节点

* 该节点配置与单击名称节点同理,区别在于按键次数修改为3,主题配置为三击。用户可参照上一小节continuous mode(trigger)模式实验-单击名称节点配置讲解。

依次对按键进行单击、双击和三击操作。

led灯显示情况

操作模式为 press-release mode(trigger):用户按下按键后持续一段时间再松开,节点记录按键持续的时间,然后通过msg.payload(int,单位ms)传给后续的节点;

最短持续时间为1800ms:表示按下按键后,1800ms以前不松开;

最长持续时间为2500ms:表示按下按键后,2500ms以前必松开。

* 简而言之,从用户刚按下按键开始,如果按住的持续时间介于1800ms与2500ms之间,则该节点触发,输出主题"长按2s"。

3.3.2长按4s节点

* 该节点配置与长按2s名称节点同理,区别在于最短持续时间为3500ms,最长持续时间为4500ms,主题配置为长按4s。用户可参照上一小节press-release mode(trigger)模式实验-长按2s名称节点配置讲解。即从用户刚按下按键开始,如果按住的持续时间介于3500ms与4500ms之间,则该节点触发,输出主题"长按4s"。

3.3.3长按1s节点

* 该节点配置与长按2s名称节点同理,区别在于最短持续时间为500ms,最长持续时间为1200ms,主题配置为长按1s。用户可参照上一小节press-release mode(trigger)模式实验-长按2s名称节点配置讲解。即从用户刚按下按键开始,如果按住的持续时间介于500ms与1200ms之间,则该节点触发,输出主题"长按1s"。

3.4.1 开启红灯节点

3.5其余节点配置

led灯显示情况;

长按2s-红灯亮起;

长按4s-绿灯亮起;

长按1s-两灯都熄灭

4.keep press mode(trigger)模式实验

其中,显示名称为长按超过2秒、长按过时3秒、长按超过1秒的节点,均为button_expand类型节点,只是显示名称不同而已。同理,显示名称为长按开启红灯、长按开启绿灯、长按关闭所有设备的节点,均为fscript节点。显示名称为红灯、绿灯均为led类型节点。

4.3button_expand节点

4.4fscript节点

4.5其余节点配置

* 同keep press mode(trigger)模式实验节点配置。

4.6实验现象

4.6.1操作

一直按住按键,持续4s。

5. 同操作类型下trigger模式与statistical模式的区别

区别一

同操作类型下,两种模式所实现的功能均可相互代替,但是所实现的fscript节点数据处理有所不同。trigger模式主要用于触发它所连接的节点工作;statistical模式则可以输出统计的信息,如连续按下按键的次数,或者按键按下所持续的时间。

区别二同操作类型下,一个statistical模式节点可以代替多个trigger模式节点所实现的功能(fscript节点处理方式也要更改),从而使我们的流图得到大幅度简化。

5.2模式实验

* 以continuous mode(trigger)模式实验为例,我们使用对应的(statistical)模式来实现,从而让大家进一步理解其之间的区别。

5.2.1 原trigger实验流图

5.2.2 现statistical实验流图

5.4fscript节点

5.4.1 红灯设备控制节点

* 同continuous mode(trigger)模式实验led灯显示情况。

由此可见,使用statistical模式要比trigger模式更佳利于流图的简化,但是流图的简化,便意味着fscript节点中的数据处理可能会更加的复杂。两种方式各有利弊,大家可以根据自身的处理习惯和偏好进行选择。

总结

button_expand扩展节点很巧妙地实现了,在有限的按键资源下,完成对远大于按键个数的事件进行控制。通过对button输出信号的处理,实现例如单击、n击、长按、短按等各种组合情况的判断。为用户在一定程度上简化了流图的复杂度,节约了一定的硬件资源成本。

关键词:

推荐内容