首页 技术服务 智能显示屏 CANopen智能显示器如何被客户终端控制(透过实体与虚拟按键控制LED灯与指示灯)

CANopen智能显示器如何被客户终端控制(透过实体与虚拟按键控制LED灯与指示灯)

前言

控制SmartDisplay需要一个系统接口和通讯协议。本文将以客户端控制的角度,模拟如何使用Arduino控制SmartDisplay,藉此理解HOST如何发出命令来改变SmartDisplay中指示灯的颜色。 范例情境如下:在UI设计中放置一个触控按钮并连接一个实体按钮。按下实体按钮或触控按钮时,将改变屏幕上指示灯的颜色,并开启或关闭外部LED灯。

说明

本应用将说明如何透过Arduino开发板控制SmartDisplay3.5寸CAN产品,并解释如何编程对实体按钮、触控按钮、屏幕上的指示灯和载板上的LED做控制,以及如何接收来自HOST端的命令。其控制主机是一个具备CANbus接口的Arduino mega 2560开发板。

应用系统方块图如下所示:

1-1-simulation

系统方块图

 

本应用需要以下配件:
  1. Smart Display
  2. ARDUINO Mega 2560
  3. ARDUINO Mega 2560的CAN Bus载板
  4. CAN bus 连接器
  5. 实体按钮
  6. LED
  7. 软件GUI-Builder v0.4.2或更高版本

范例分为三个部分:
  1. 在GUI Builder中设计项目
  2. 建立和上传项目
  3. 编译Arduino主机
 

以GUI builder设计项目

首先,建立一个新项目,输入项目名称,然后选择装置类别,此应用选择3.5寸的装置。通讯协议选择CANopen,显示方向为横向模式。接着在UI模板中选择空白模板,最后点选Create按钮,如图所示。

02-design-the-demo-project-in-gui-builder

 

完成上述设定后,会得到一个空白的页面。

02-design-the-demo-project-in-gui-builder-1

 

根据应用范例,需要在工作区新增一个触控按钮和一个指示灯对象。您可以透过简单地拖拉来完成此操作:

02-design-the-demo-project-in-gui-builder-2

 

建立并上传项目

完成所有前面的步骤后,现在就可以建立项目了。请按照以下步骤操作:
点选GUI Builder工具栏上的"Device"按钮,并选择"Device Property"。 在"Device Property"对话框中,选择您所需要的鲍率。请确保选择的鲍率与您的装置相同。 单击"Upload"按钮,将此项目上传到您的装置中。上传完成后,您的装置将开始运行该项目。

03-build-and-upload-the-project

 

当上传项目完成后,您将看到"Upload project completed",此时点选"OK"按钮,关闭窗口。如下图所示:

03-build-and-upload-the-project-1-1

 

上传完成后,您将在SmartDisplay上看到开机画面。

03-build-and-upload-the-project-2-1

 

画面由开机页面跳至操作页面代表项目上传成功:

03-build-and-upload-the-project-3-1

 

编译Arduino主机

Arduino 整合开发环境版本“IDE v2.0.4”用于 Arduino 编码。 为了实现CAN bus通讯协议,程序中使用了mcp2515_can.h函式库和其他一些辅助库。有关更多细节,请参阅Arduino程序代码。其中要注意连接主机和SmartDisplay的地址。如果您想了解有关主机和SmartDisplay之间如何通过CAN bus通讯的详细信息,请参考GUI Builder通讯栏。在Arduino IDE程序中,所有必需的寄存器地址都已定义,如下图所示:

04-program-the-arduino-host

 

在CAN Open结构中,按钮的index对应于0(0x2000),指示灯的index对应于1(0x2001)。重要的是要注意对象的index。如果知道对象的index,就可以在Arduino主机程序中去更改对象的状态,下图命令字段可观察出对应的对象index:

04-program-the-arduino-host01-1

 

04-program-the-arduino-host01-2

 

这里定义了对象的数据类型。如果用户想要新增更多的对象,则需要在这里定义其数据类型:

04-program-the-arduino-host02

 

下图为如何透过“ObjectFunCallback”中处理每个对象的接收值。使用者可以在此程序代码下面修改或新增更多项目。

04-program-the-arduino-host03

 

当Arduino主机从实体按钮接收到值的变更时,它将通过CAN 讯号向SmartDisplay发送特定的值。请参考以下程序来了解“command structure ids and sub-indexes”。这段程序的目的是根据从实体按钮更改的值来更新指示灯(object index 2)的值。

04-program-the-arduino-host04

 

在Arduino IDE程序中,您需要定义对象的寄存器地址、接脚模式和外部配件的设置,例如实体按钮和LED接脚的输入或输出,以及设定鲍率。

04-program-the-arduino-host05-1

04-program-the-arduino-host05-2

 

最后,在循环中定义任务以执行决定的情境。当按下实体按钮或触控按钮时,将更改屏幕上指示灯的颜色并打开或关闭外部LED。

04-program-the-arduino-host06

透过Arduino IDE成功验证并上传此程序后,透过按下实体按钮或触控按钮,可以打开LED并将指示灯颜色更改为绿色。当指示灯显示为红色且LED关闭时,表示既未按下实体按钮也未按下触控按钮。如下图所示:

05-appendix-set-up-the-project

 

请参考GitHub链接下载上述程序,并可以在范例中找到有关此范例项目的详细数据。下方是实际的硬件设置图:

05-appendix-set-up-the-project01

 

最后就可以透过按下实体按钮或触控按钮来更改屏幕指示灯与LED状态来完成SmartDisplay的范例。

结语

本文的目的是推广GUI Builder的操作和应用,不只让使用者了解如何通过使用CAN bus来设计自己的主机控制器。还可以了解如何通过主机端接收和发送命令,并可以对SmartDisplay进行全面的控制。

回分类页
go top
close