使用 LinkIt Remote
Last updated
Last updated
LinkIt Remote 能讓開發者透過手機程式去遙控 LinkIt 7697。它主要由兩個部分構成:
LinkIt 7697 上面的 Arduino LRemote 程式庫,讓開發者指定手機上面的遙控器程式的介面外觀,並接收處理來自手機的遙控指令。
在 iOS 與 Android 上面的 程式,它可以掃描附近有執行 LRemote 程式庫的 LinkIt 7697,並連線遙控它們。 請點擊下面的連結下載手機程式:
上述的兩個部分,中間是透過低功耗藍牙來進行資料與指令的傳輸。
1.打開 Arduino IDE 的選單,並選擇 File > Examples > LRemote > RemoteControl,然後上傳此範例程式到 LinkIt 7697
2.打開 Arudino IDE 的 Serial Monitor。請維持 LinkIt 7697 的電源,讓他持續運作。
4.在手機上面打開 LinkIt Remote 程式。程式會開始掃描附近有運行 LRemote 程式庫的裝置。應該會在手機程式的介面上面看到一個名叫 "LinkIt 7" 或是 "LinkIt 7697" 的裝置。
5.點擊顯示的「LinkIt 7697」項目,程式會花一些時間連接到 LinkIt 7697,然後顯示如下的遙控器介面:
6.首先點擊 USR LED 這個切換按鈕。應該會看到 LinkIt 7697 板子上面的內建 USR LED 會亮起來。
7.然後,接著拖動 Value Slider 這個捲動軸。會看到 Arduino IDE 的 Serial Monitor 會印出捲動軸的目前數值。
這個範例簡單的展示了要怎麼利用 LRemote 與 LinkIt Remote 來建造可以用於 LInkIt 7697 的手機遙控程式。
在上面描述的範例程式中,我們首先建立了一個叫做 LinkIt 7697 的低功耗藍牙裝置,並且添加了數個對應到遙控器介面的 GATT 屬性。LinkIt Remote 手機程式會掃描並且解析這些 GATT 屬性,然後在手機畫面上顯示出相對應的遙控器控制元件。
使用 LRemote library 的第一步就是先設定欲建立的裝置。透過 LRemote 程式庫,可以直接指定開發者要呈現的裝置名稱、遙控器介面是橫向或是直向,以及在遙控器介面上的畫布的網格數目。
In the example above,
我們把裝置取名為 LinkIt 7697
並且指定了一個直向、等分為 3 x 5 的網格。這個網格並不會實際顯示出來,而是作為後續擺放遙控按鈕元件的參考座標。網格的示意圖如下:
設定好手機的方向以及網格數量之後,我們就可以開始把控制元件擺放到網格上面。比如說,如果我們要添加一個可以用來開關 USR LED 的開關按鈕,我們首先要在全域變數空間當中宣告一個 LRemoteSwitch:
and then we configure the text label, size, and position of the switch button:
然後我們接著要設定該按鈕的文字標籤、顏色、大小、以及位置:
在上面的範例中,
我們將文字標籤設定為 "USR LED"
我們將按鈕的顏色設定為 RC_BLUE
位置座標設定為 (0, 1),也就是 X = 0、Y = 1,意思是要把這個按鈕擺放到第 1 欄的第 2 列,可以參考下面的圖片來瞭解座標系的編排方式:
設定完成之後,我們要呼叫 LRemote.addControl(switchButton) 來將這個按鈕真正的加到控制器的介面裡面。
當設定好所有的按鈕之後,我們可以呼叫 LRemote.begin() 來啟動我們的裝置,並向周圍發送廣播。
我們可以不斷的用 LRemote.connected() 來檢查是否已經有 LinkIt Remote 程式連接到我們的 LinkIt 7697 裝置:
當 LinkIt Remote 連線到此裝置之後,手機程式會查詢有哪些控制元件,並且在手機畫面上面顯示出來:
接著,使用者可以透過點擊手機畫面上面的控制元件,來發送指令到 LinkIt 7697。在 LinkIt 7697 上面,我們需要不斷的在 loop() 函式當中定期呼叫 LRemote.process() ,來檢查並且處理來自手機的指令:
在手機傳送過來的指令都被處理完成之後, LRemote 會更新每一個控制元件的相關數值,比如說,針對開關按鈕,可以使用下列的 API:
LRemoteSwitch::isValueChanged() 可以得知使用者是否有撥動開關按鈕
LRemoteSwitch::getValue() 可以取得當前的開關狀態:
0 表示「關」
1 表示「開」
範例程式便是利用這兩個 API 來決定要不要打開或是關閉板子上內建的 USR LED。
針對捲動軸 (LRemoteSlider) ,也可以使用相同的 API,不同之處在於 getValue() 會回傳捲動軸的數字。
其他按鈕 (LRemoteButton and LRemoteCircleButton) 的 API 比較單純:
getValue() 回傳 0 表示按鈕沒有被按下
getValue() 回傳 1 表示按鈕處於被按下的狀態
另外,也可以使用 LRemoteLabel 來顯示單行文字。不過,因為使用者沒辦法跟標籤進行互動,所以這個類別不會提供 getValue() 這個 API。
開源軟體
LRemote 程式庫以及 LinkIt Remote app 使用了下列的函示庫:
3.用 iOS 或是 Android 手機,從下面的 app store 的連結下載並安裝 。