我們重視您的隱私
通過點擊「允許所有 Cookie」,代表您同意在您的設備上存儲 Cookie 以增強網站瀏覽體驗、分析網站使用情況並協助我們的行銷和網站效能優化工作。您可以在我們的隱私權政策中找到有關於此的更多資訊。
控制 Smart Display 需要系統介面與通訊協定。本文將從客戶端控制的角度出發,透過 Arduino 控制 Smart Display 的實作範例,說明 HOST 如何發出命令改變 Smart Display 中指示燈的顏色。範例情境是在 UI 中配置一個觸控按鈕,並連接一個實體按鈕;按下實體按鈕或觸控按鈕時,將改變螢幕上指示燈的顏色,並開啟或關閉外部 LED 燈。
本應用將說明如何透過 Arduino 開發板控制 3.5 吋 CAN Smart Display,包括透過程式控制實體按鈕、觸控按鈕、螢幕上的指示燈及載板上的 LED,以及 Smart Display 如何接收來自 HOST 端的命令。本範例使用具備 CAN Bus 介面的 Arduino Mega 2560 開發板作為控制主機,透過 CANopen 與 Smart Display 進行通訊。
應用系統方塊圖如下所示:

系統方塊圖
首先建立一個新專案並輸入專案名稱,接著選擇裝置類別,本應用選擇 3.5 吋裝置。通訊協定選擇 CANopen,顯示方向設定為橫向模式。接著在 UI 範本中選擇空白範本,最後點選 Create 按鈕建立新專案,如圖所示。

完成上述設定後,會進入一個空白頁面。

根據此應用範例,需要在工作區新增一個觸控按鈕和一個指示燈物件。從控制元件區選取所需物件,並拖曳至工作區即可,如圖所示:

完成前述設定與介面設計後,即可建立並上傳專案。點選 GUI Builder 工具列上的「Device」,並選擇「Device Property」。在「Device Property」視窗中,可使用預設的傳輸速率(Baud Rate),或依應用需求進行調整。請確認 Arduino 程式與 GUI Builder 中設定的 Baud Rate 相同。完成設定後,點選「Upload」按鈕,將專案上傳至 Smart Display,如下圖所示:

專案上傳完成後,畫面會顯示「Upload project completed」。點選「OK」按鈕關閉視窗,如下圖所示:

上傳完成後,Smart Display 將顯示開機畫面,如下圖所示:

開機畫面結束後,Smart Display 將切換至已上傳的操作頁面,表示專案已成功建立並上傳:

Arduino 整合開發環境版本“IDE v2.0.4”用於 Arduino 編碼。 為了實現CAN bus通訊協定,程式中使用了mcp2515_can.h函式庫和其他一些輔助庫。有關更多細節,請參閱Arduino程式碼。其中要注意連接主機和SmartDisplay的位址。如果您想瞭解有關主機和SmartDisplay之間如何通過CAN bus通訊的詳細資訊,請參考GUI Builder通訊欄。在Arduino IDE程式中,所有必需的寄存器位址都已定義,如下圖所示:

在 CANopen 結構中,Button 的 index 對應於 0(0x2000),Indicator 的 index 對應於 1(0x2001)。進行 Arduino 主機程式開發時,需要確認各物件對應的 index;知道物件的 index 後,即可透過 Arduino 主機程式變更物件狀態。可從 GUI Builder 通訊紀錄中的命令內容確認物件所對應的 index,如下圖所示:


這裡定義了物件的資料類型。如果使用者想要新增更多的物件,則需要在這裡定義其資料類型:

下圖說明如何透過 ObjectFunCallback 處理各物件接收到的值。使用者可依應用需求在此程式碼中修改或新增其他物件的處理方式。

當Arduino主機從實體按鈕接收到值的變更時,它將通過CAN 訊號向SmartDisplay發送特定的值。請參考以下程式來了解“command structure ids and sub-indexes”。這段程式的目的是根據從實體按鈕更改的值來更新指示燈(object index 2)的值。

在Arduino IDE程式中,您需要定義物件的寄存器位址、接腳模式和外部配件的設置,例如實體按鈕和LED接腳的輸入或輸出,以及設定鮑率。


最後,在 loop() 中定義執行此應用情境所需的程式邏輯。按下實體按鈕或 Smart Display 上的觸控按鈕時,系統會改變螢幕上 Indicator 的顏色,並同步開啟或關閉外部 LED。

透過 Arduino IDE 成功驗證並上傳程式後,按下實體按鈕或 Smart Display 上的觸控按鈕,即可開啟 LED,並將 Indicator 顏色變更為綠色。當 Indicator 顯示紅色且 LED 關閉時,表示實體按鈕與觸控按鈕皆未被按下,如下圖所示:

上述程式可從 GitHub 連結下載,並可參考範例中的相關檔案進一步了解此 Demo 專案。實際硬體配置如下圖所示:

完成上述設定後,即可透過按下實體按鈕或觸控按鈕來更改螢幕指示燈與LED狀態來完成SmartDisplay的範例。
本文透過實際範例介紹 GUI Builder 的操作與應用,讓使用者了解如何透過 CAN Bus 設計主機端控制應用,以及如何透過主機端接收與發送命令,進而控制 Smart Display。透過此範例,開發人員可進一步了解主機與 Smart Display 之間的 CANopen 通訊與控制方式,並作為後續 Smart Display 應用開發的參考。
通過點擊「允許所有 Cookie」,代表您同意在您的設備上存儲 Cookie 以增強網站瀏覽體驗、分析網站使用情況並協助我們的行銷和網站效能優化工作。您可以在我們的隱私權政策中找到有關於此的更多資訊。