LEDs
继上一篇章 EsDA MPC-ZC1 入门(一)—— 软件安装 ,本章节以最简单的 LED控制 例程来介绍 AWFlow 应用流图的基本开发过程。
整个教程通过5个步骤,演示了节点添加、配置、连线等基本开发过程,实现了LED点亮, 闪烁, 流水灯等功能。
Step.1 搜索 LED 节点
可通过搜索框,快速定位到 LED 节点。
每一个节点都有对应的帮助文档,详细介绍了节点的属性、输入参数、输出数据、行为特性和对应例程。
1. LED 节点属性
名称(Name):节点名称,可用于索引查找本节点;
显示名称(Display Name):用于画布上显示的名称,仅做显示;
设备名称(Device Name):用于索引硬件 LED 设备,通常由目标板提供枚举选项;
初始状态(Initial State):LED 初始状态,on(亮) 或 off(灭)。
2. LED 输入参数
payload(负载数据):指示 LED 的状态参数,0(灭),1(亮),2(反转);
timer(闪烁周期):当本参数存在时,LED 进入闪烁模式,并按照参数值,周期性闪烁;
device_name(设备名称):通常用于多 LED 控制时,匹配指定 LED 设备;
fast_blink(闪烁次数):当使能 timer 功能,此参数可用于设置闪烁参数。
所有节点的输入参数皆由上级节点输出提供,通常为 msg 对象携带的对应属性参数。
3. LED 输出数据LED 为 sink 类型节点,不对外输出。
Step.2 添加 LED 节点
将 LED 节点推拽至画布上,完成节点添加。
双击画布上的 LED 节点,打开节点配置界面。
此处选择 led_red 设备,对应板载的红色LED,并将初始状态配置为 on,然后点击完成。
属性说明可以参考 LED 节点属性 章节。
Step.3 下载流图
点击 请选择目标板,选中目标板通信接口(AWFlow Designer 后台会自动检测符合AWFlow 通信标准的通信接口)。
点击下载流图按钮。
下载完成。
此时可以看到板子的 红色LED 已经亮起,这是因为我们配置了 LED 的初始状态为 on,所以当 LED 节点被加载时,会点亮对应的LED。
虽然LED已经成功点亮,但是仅使用 LED 节点并不能实现复杂的状态控制功能,我们需要进一步添加其他节点来实现复杂业务。
Step.4 添加业务
大多数带有业务的数据流,都会根据系统中的一些事件来做出响应的,一般以一个 pump 类型的节点作为起始点,通过此节点接收系统事件来触发数据流执行,这里我们以 1秒 反转一次LED状态 作为业务。我们需要添加一个 timer 节点,利用 timer 节点产生的周期事件来触发数据流执行,同时推动一个 fscript 脚本节点来向 LED 节点输入反转的命令。
添加 timer 节点
添加 fscript 节点
编辑 fscript 节点
如图片所示:
添加 timer、fscript 节点,并进行连线;
编辑 fscript 节点脚本。
msg.payload = 2
可参考 LED 输入参数
timer 节点默认以 1 秒为周期,触发数据流运行,向 fscript 传递定时计数值,此处 fscript 节点并未使用 timer 的计数值,仅利用其周期事件来向 LED 节点发送反转命令。
下载流图
重复 Step.3 下载流图 的步骤,下载最新流图,可以看到板载红色LED整以1秒的周期进行反转。
Step.5 扩展业务
为了更加深入的了解业务的开发过程,这里通过流水灯业务进一步扩大业务规模。
1. 添加新数据流
按照之前添加节点的方式,新增额外2路LED控制数据流,如下图所示:
可选中画布中的 fscript 和 led 节点通过 ctrl+c 复制,ctrl+v 粘贴来快速添加节点。
2. 配置LED节点
3路 LED 配置如下图所示:
3. 配置业务节点
3路 fscript 节点配置如下图所示:
前面我们了解到 timer 节点会周期性向下一节点推送一个定时器计数值(msg.payload),我们可利用这个计数值来索引不同的LED。
if (msg.payload /1000 %3 == 0) { output.payload = 1} else { output.payload = 0
总共有3路LED,那么我们通过 msg.payload /1000 % 3 计算来获得3个索引条件。
timer 节点计数精度为1毫秒,默认计数周期为1秒,除以 1000 获得秒计数值。
代码点亮LED
msg.payload /1000 %3 == 0红色
msg.payload /1000 %3 == 1蓝色
msg.payload /1000 %3 == 2绿色
由于 timer 节点的输出数据(msg),需要被推送到多路数据流上,所以为了不影响其他数据流的使用,这里我们选择 output 作为输出数据。
最终流图如下所示:
4. 下载流图重复Step.3 下载流图 的步骤,下载最新流图,可以看到板载LED整以1秒的周期进行切换显示。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !