Engee 文档
Notebook

为 Arduino 生成代码(LED 灯闪烁)

Arduino 平台是当今教育机器人和简单过程自动化领域最常用的平台。它可用于许多应用领域的原型开发。

在本示例中,我们将展示如何通过Engee中的图形模型生成 Arduino 编程代码,使用电路设计中最简单的任务之一。让我们创建一个模型,以指定频率闪烁 Arduino 平台的 "板载 "LED。

介绍

本例中概述的将模型转移到硬件平台的解决方案可分为几个步骤:

1.创建或修改Engee模型 2 描述模型-Arduino接口 3.下载包含项目的文件夹并通过 Arduino IDE 上传到平台

在以模型为中心的设计过程中,我们尽量将所有精力集中在第一阶段--为将被传输到 Arduino 的算法建模。界面定制阶段只需很少的干预,代码生成和上传到目标平台虽然不是自动化的,但也不涉及任何复杂的操作。

平台准备

在本例中,我们只需要一个兼容 Arduino 的平台(Uno、Leonardo、Iskra 等)和一根合适的 USB 线。

您还需要在计算机上安装 Arduino IDE,查找并安装 附加驱动程序(如有必要),并通过 USB 端口连接现有电路板。

image_2.png

查找和安装连接外部硬件的驱动程序通常需要花费一些精力。上述驱动程序可让您与 Arduino Uno、Arduino Leonardo 和许多其他类似电路板(如 Iskra Neo)配合使用。不过,如果遇到任何困难,我们建议您查阅帮助文章或 Engee 社区以寻求帮助。

型号说明

我们将根据模型生成代码blink.engee.

每一步都会执行其中所述的计算,并返回两个值:

  1. out_LED_BUILTIN - LED 状态(最初等于 1,每个周期变为 "相反")、
  2. param_WAIT_MS - 不断返回的值500 (两次调用模型代码之间的毫秒数)。

image_2.png

生成代码的条件之一是模型使用实体步求解器_。

值得注意的是,从技术上讲,从所有区块生成代码是不可能的(甚至是不可取的)。允许生成的区块列表仍然非常庞大,但查看Engee 代码生成器文档总是非常有用的。_

代码生成

点击 Engee 工作区的右上角(然后您需要将blink_code 文件夹移到sketch_blink_custom 文件夹内)。
<br

在本演示中,我们建议使用以下命令来完成此操作:

In [ ]:
engee.generate_code( "$(@__DIR__)/blink.engee",
                     "$(@__DIR__)/sketch_blink_custom/blink_code" )
Out[0]:
"Created directory - /user/start/examples/codegen/arduino_blink/sketch_blink_custom/blink_code"

因此,在sketch_blink_custom 目录中,我们将找到blink_code 文件夹,在该文件夹中,我们将找到.c.h 文件,其中包含我们系统的代码。

项目文件

我们的项目中只有一个模型。在生成的文件中,我们只需要包含该模型代码的文件:源代码blink.c 和头文件blink.h

值得注意的是项目文件和目录的结构:

image_2.png

  • 文件sketch_blink_custom.ino 包含模型-Arduino 接口的描述sketch_blink_custom 级目录必须与`.ino` 文件命名相同(Arduino IDE 要求)、
  • 目录blink_code 包含生成代码的文件,我们将把这些代码包含在文件*.ino 中。

模型-Arduino 接口

我们的模型端口与 Arduino 不同功能输入点之间的接口在文件sketch_blink_custom.ino 中进行了描述。我们建议您直接在Engee中打开并研究其内容。

该代码实现了一个运行模型生成代码的无限循环。输出值被放置在blink_Y 结构中,然后我们将每个值传递给标准 Arduino 库中所需的函数。

将模型传输到 Arduino

只需将演示目录打包成一个归档文件,并从Engee文件管理器下载到本地计算机即可。只需在右键菜单中执行一次操作,即可完成存档和下载。

image_2.png

解压压缩包后,您会发现sketch_blink_custom.ino 文件,该文件可在 Arduino IDE 中打开。

image_2.png

您已经在 Arduino IDE 中打开了一个准备就绪的项目,只需使用 "上传 "按钮将其发送到目标平台即可。

image.png

运行该示例的典型结果显示在以下视频中:

20240126_122454_2_30fps.GIF

结论

处理低级代码通常需要一些技术技能和额外的操作。

除了开发模型,您至少还需要

  • Engee 模型和 Arduino 功能之间创建一个接口、
  • 下载项目并在本地目标平台上运行。

在执行单个应用任务时可能会出现更复杂的问题,例如,使模型的速度与 Arduino 处理器的时钟速度相匹配。

然而,您在Engee中建立的适合您需要的优化工作流程,将通过自动化许多常规活动,为复杂的项目节省大量精力:

  • 同步项目代码以匹配数学模型、
  • 创建可视化文档--在 Engee 中,您可以使用命令自动为脚本添加示意图和输出图表,并生成 HTML 或 PDF 格式的报告、
  • 大大简化半自然测试。

示例中使用的块