我们重视您的隐私
通过点击「允许所有 Cookie」,代表您同意在您的设备上存储 Cookie 以增强网站浏览体验、分析网站使用情况并协助我们的营销和网站效能优化工作。您可以在我们的隐私权政策中找到有关于此的更多信息。
控制 Smart Display 需要相应的系统接口和通信协议。本文从主机控制的角度出发,通过 Arduino 控制 Smart Display 的实际应用示例,介绍 HOST 如何发送命令来改变 Smart Display 上指示灯的颜色。在本示例中,UI 界面中配置了一个触摸按钮,同时 Arduino 连接一个实体按钮。按下实体按钮或触摸按钮时,屏幕上的指示灯颜色会随之改变,并同步控制外部 LED 的开启或关闭。
本应用介绍如何使用 Arduino 开发板控制 3.5 英寸 CAN Smart Display,包括如何通过程序控制实体按钮、触摸按钮、屏幕上的指示灯以及开发板上的 LED,同时说明 Smart Display 如何接收来自 HOST 的命令。本示例采用配备 CAN Bus 扩展板的 Arduino Mega 2560 作为主机控制器,并通过 CANopen 与 Smart Display 进行通信。
系统框图如下所示:

系统框图
首先创建一个新项目并输入项目名称,然后选择设备类型,本示例使用 3.5 英寸设备。通信协议选择 CANopen,并将显示方向设置为 Landscape。接着在 UI 模板中选择 Blank Template,最后点击 Create 创建新项目,如下图所示。

完成上述设置后,将进入一个空白页面。

根据本应用示例,需要在工作区中添加一个触摸按钮和一个 Indicator Widget。从控件面板中选择所需的 Widget,并将其拖放到工作区中,如下图所示。

完成前面的设置和 UI 设计后,即可创建并上传项目。点击 GUI Builder 工具栏中的 Device,然后选择 Device Property。在 Device Property 窗口中,可以使用默认波特率(Baud Rate),也可以根据实际应用需求进行调整。请确保 Arduino 程序中设置的 Baud Rate 与 GUI Builder 中的设置保持一致。完成设置后,点击 Upload,将项目上传至 Smart Display,如下图所示。

项目上传完成后,画面会显示“Upload project completed”。点击 OK 关闭窗口,如下图所示。

上传完成后,Smart Display 将显示启动画面,如下图所示。

启动画面结束后,Smart Display 将切换至已上传的应用页面,表示项目已成功创建并上传。

本示例使用 Arduino IDE v2.0.4 编写 Arduino 主机程序。为实现 CAN Bus 通信,程序中使用了 mcp2515_can.h 库以及其他辅助库,详细内容请参考 Arduino 程序代码。在建立主机与 Smart Display 之间的通信时,需要确认与各对象相关的地址。如需进一步了解主机与 Smart Display 之间的 CAN Bus 通信,可参考 GUI Builder 中的通信日志。Arduino IDE 程序中已定义所需的对象地址,如下图所示。

在 CANopen 结构中,Button 的 index 对应于 0(0x2000),Indicator 的 index 对应于 1(0x2001)。需要特别注意每个对象对应的 index。知道对象的 index 后,即可通过 Arduino 主机程序更改该对象的状态。可从下方仿真日志表中的命令信息查看各对象对应的 index:


此处定义了各对象的数据类型(Data Type)。如需添加其他对象,也需要在程序中定义相应的数据类型。

下图说明 ObjectFunCallback 如何处理从各对象接收到的值。用户可根据实际应用需求修改程序代码,或添加其他对象的处理逻辑。

当 Arduino 主机检测到实体按钮的状态发生变化时,会通过 CANopen 向 Smart Display 发送相应的值。以下程序代码可用于了解命令结构中使用的 ID 和 sub-index。此段程序会根据实体按钮的状态变化,更新 Indicator(object index 2)的值。

在程序中定义所有对象的寄存器地址,并设置实体按钮和 LED 等外部组件的引脚模式,包括输入或输出模式,同时设置波特率,如下图所示:


最后,在 loop() 中定义实现本应用场景所需的程序逻辑。当按下实体按钮或 Smart Display 上的触摸按钮时,系统会改变屏幕上 Indicator 的颜色,并同步开启或关闭外部 LED。

通过 Arduino IDE 成功验证并上传程序后,按下实体按钮或 Smart Display 上的触摸按钮,即可开启 LED,并将 Indicator 的颜色变为绿色。当 Indicator 显示为红色且 LED 关闭时,表示实体按钮和触摸按钮均未被按下,如下图所示。

上述程序可通过 GitHub 链接下载。示例中还提供了与本 Demo 项目相关的其他文件和信息,可供进一步参考。实际硬件配置如下图所示。

完成上述步骤后,即可通过实体按钮或 Smart Display 上的触摸按钮控制屏幕上的 Indicator 状态和外部 LED,完成本次 Smart Display CANopen 通信示例。
本示例介绍了 GUI Builder 的操作与应用,帮助用户了解如何通过 CAN Bus 开发主机端控制应用,以及主机如何通过发送和接收命令来控制 Smart Display。通过本示例,开发人员可以进一步了解主机与 Smart Display 之间的 CANopen 通信与控制方式,并将其作为后续 Smart Display 应用开发的参考。
通过点击「允许所有 Cookie」,代表您同意在您的设备上存储 Cookie 以增强网站浏览体验、分析网站使用情况并协助我们的营销和网站效能优化工作。您可以在我们的隐私权政策中找到有关于此的更多信息。