首頁 技術服務 智能顯示器 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