基于Proteus的Arduino可视化设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 Visual Designer流程图模块

Visual Designer包括一组小的流程图模块(也可称流程图块或流程块),用于固件中的编程结构,如表1-2所示。

表1-2 流程图中的小模块

1.事件开始/子程序模块

事件开始模块与结束模块一起使用以定义子程序(如写入显示器)和事件处理程序(如处理定时器中断)的开始和结束。

如图1-50所示,如果正在创建一个子程序,则所需的全部是模块的名称,这时例程的名称在放置和编辑子程序调用块时可以选择。

图1-50 仅需要名称的简单子程序配置

如果正在创建一个程序来处理可触发事件(如中断处理程序),那么还需要指定触发器,如图1-51所示。

注意

周期触发功能提供了一个非常方便的方式以在规则的时间间隔获得一个可重复的调用。然而,它确实使用了一个CPU定时器,所以要注意,如果在这里配置并使用它,就不要在其他地方使用它。

图1-51 基于timer1相关事件设置定时器中断服务程序

2.结束模块

结束模块用于终止程序或子程序,并且通常放置在事件模块中。

注意

典型的Arduino工程使用两个程序模块和结束模块进行初始化,一个用于程序设置,另一个用于主程序执行。

3.赋值/分配模块

赋值/分配模块是标准的用于变量赋值的工具,可以创建、编辑和删除变量,如图1-52所示。

4.子程序调用模块

子程序调用模块可以调用流程图中任何地方定义的函数,如图1-53所示。

图1-52 给变量赋值

图1-53 指定调用子程序

注意

必须首先使用事件开始模块和结束模块创建和命名子程序。子程序对话框中的组合框列出所有命名的程序。

5.数据存储模块

数据存储模块用于表示存储对象(SD卡)上的操作或方法。该模块通常与资源(如文本文件)一起使用以操纵文件的存储,如图1-54所示。

图1-54 数据存储模块上的操作

当添加一个包含SD卡的扩展板时,它一定有一个使用SD卡内容的方法。例如,TFT扩展板具有DrawBitmap()程序,而Wave扩展板具有Play()程序。在这些情况不应使用存储数据模块,而只是将资源拖放到流程图上,如图1-55所示。

图1-55 添加SD扩展板

6.外围设备操作模块

外围设备操作模块原则上允许在硬件上对一个新工程执行一个操作,硬件仅由处理器和可用操作组成,因此受到限制,如图1-56所示。但是,当向工程添加外围设备扩展板时,通过此模块可进行类型交互并控制其I/O口。以Grove伺服电机模块为例,其可用程序如图1-57所示。

图1-56 处理器上的可用操作

图1-57 Grove伺服电机模块上的可用程序

7.时间延迟模块

该模块用于在程序中引入特定的延迟,如图1-58所示。

图1-58 在程序中指定100ms延迟

注意

在Arduino中,在延时函数期间,读取传感器、数学计算和引脚操作等功能均被停止,所以实际上它停止了大多数程序(activity),但是中断和其他特定的功能仍然工作。

8.判断模块

判断模块的作用是基于是/否问题,进行所需程序流的选择。对话框需要填入一个布尔表达式作为判断条件(如图1-59所示),它较代码而言更加直观。

当在流程图上链接了判断模块时,将YES和NO置于默认位置。如果其位置不符合流程图要求,可以通过快捷菜单对其进行交换,如图1-60所示。

图1-59 设置判断模块条件

图1-60 在判断模块上交换YES和NO流程图连接线

9.循环结构模块

循环结构模块提供了一个简单的、对话驱动的方式来配置一些常见的程序循环类型。它成对放置,然后将所需的逻辑块连接到循环内。编辑循环对话框需要以下几项。

1)计数循环

计数循环只是执行循环体指定次数的一种方式,如图1-61所示。

2)For-Next循环

For-Next循环是计数循环的扩展,需要指定开始、停止和步骤等参数来确定循环体执行的频率,如图1-62所示。

图1-61 计数循环

图1-62 For-Next循环

3)While-Wend循环

当测试条件评估为TRUE时,此结构函数执行循环体,如图1-63所示。

注意

测试发生在循环的顶部,所以如果测试条件是FALSE,则开始循环内容将不会被执行。

4)Repeat-Until循环

Repeat-Until循环类似于While-Wend循环,它一直执行,直到测试条件的计算结果为FALSE。

测试发生在循环的底部,因此循环体总是执行至少一次,如图1-64所示。

图1-63 While-Wend循环

图1-64 Repeat-Until循环

10.互连模块

互连模块基本上是“虚拟连接”,并且需要成对使用。如果两个互连模块具有相同的数字,则可以想象一个看不见的线将其连接在一起。互连模块用于将流程图逻辑拆分为多个列。

可以拖放两个互连模块,将它们链接到流程图,然后重新编号,或者可以右击模块并在弹出的快捷菜单中选择Split命令,以分割向导线,如图1-65所示。

图1-65 用互连模块实现分割向导线

注意

可以通过将一个互连模块拖到另一个互连模块的顶部,将两个互连模块连接在一起,使其成为一条线。

11.注释模块

注释模块用于自由输入描述性文本内容,如图1-66所示。

图1-66 注释模块对话框