Android二維條形碼輕鬆玩樂高機器人

樂通探索夢發表於2018-12-12

本期的App Inventor 機器人專欄將結合Android 應用程式中常見的QRCode 掃描功能,讓機器人可以讀取QRCode 中的資訊後執行對應的動作。您也會學到如何使用ZXing 的QRCode 產生網站來產生各種不同內容的二維條形碼。 我們針對機器人來發展了一種特殊的二維條形碼指令:「B,50,10,C,50,10」,依序代表了「左側馬達,左側馬達電力,左側馬達轉動距離,右側馬達,右側馬達電力,右側馬達轉動距離」。

什麼是QRCode?如何產生二維條形碼? QR 碼是一種條形碼, 比我們去便利商店買東西時,店員所掃描的傳統條形碼相比,可以儲存更多資料。另一方面,QRCode 還可以說明現在這筆資料的型態,例如是電話號碼、超連結、純文字或是地理座標等等,智慧型手機就可以根據這些資料型態來開啟對應的程式(如果是電話號碼就會詢問是否要撥號或是傳送簡訊), 非常方便。現在您在街頭巷尾都可以看到各種QRCode ,掃瞄之後就可以造訪網站或是作為折價劵,QRCode 在日本已經是一項非常普遍的技術。請到ZXing 的QRCode 網站,先選擇資料型別為URL 超連結( 圖1a), 輸入您想要的網址後點選「Generate」就可以看到QRCode了。接著您就能使用手機上任何一種QRCode 掃描軟體來掃瞄了( 圖1b), 還沒有的話請上Play下載。

Android二維條形碼輕鬆玩樂高機器人
圖1a 選擇資料型別為URL 後按下Generate 產升條形碼。

Android二維條形碼輕鬆玩樂高機器人
圖1b 使用ZXing 條形碼掃描程式來辨識QRCode 。

開始玩機器人 首先請把NXT 機器人準備好,並將左側馬達接在NXT 的輸出端B , 右側則是輸出端C(注1)。請確認NXT主機的藍芽是啟動的,接著將NXT 主機與Android 手機進行藍芽配對(注2),完成之後就可以把機器人放到一邊了,啟動藍芽之後您可以從NXT 主機的螢幕左上角看到藍芽的符號。

接下來依序介紹程式的各個功能:

STEP1:程式初始化與選取NXT主機 在程式初始化(Screen1.Initialize事件)時,將NXTList 清單指定為藍芽配對裝置列表(圖2a)。等到聯機成功後( 圖2b), 才會顯示觸控板,原本無法按下的「掃描二維條形碼」以及「斷線」等按鈕這時也都可以操作了。

Android二維條形碼輕鬆玩樂高機器人
圖2a 指定藍芽配對裝置列表。

Android二維條形碼輕鬆玩樂高機器人
圖2b 程式進入畫面。 點選主機完成並確認聯機成功的話,會在畫面中間的黃色區塊顯示所聯機的NXT 主機藍芽地址與名稱。

Android二維條形碼輕鬆玩樂高機器人
圖3a 聯機成功後設定相關元件與顯示裝置名稱。

Android二維條形碼輕鬆玩樂高機器人
圖3b 聯機完成後才可以掃描條形碼。 STEP2:開啟QRCode掃描程式

本次程式使用了App Inventor 的BarcodeScanner 元件來進行掃描,雖然說是一個程式元件, 但其實也只是呼叫手機上預安裝的條形碼掃瞄程式而已。請到Play 上搜尋「ZXing」, 您可找到由ZXing 團隊所開發的QRCode 掃描程式。按下「掃描二維條形碼」按鈕之後就會開啟條形碼掃瞄程式進行掃描。ZXing 掃描器連結:

Android二維條形碼輕鬆玩樂高機器人
圖4a 點選按鈕來啟動條形碼掃瞄程式。

Android二維條形碼輕鬆玩樂高機器人
圖4b 掃描中。 掃描完成後,會將掃描結果顯示在Label_msg 上, 並透過split at any指令將掃描結果以「,」分割成6 段。例如「B,50,10,C,50,10」就會被切成「B」、「50」、「10」、「C」、「50」與「10」等六個文字後存入qrcode_list 這個文字陣列中。

Android二維條形碼輕鬆玩樂高機器人
圖5a 掃描完成後顯示掃描結果。

Android二維條形碼輕鬆玩樂高機器人
圖5b 正確顯示掃描結果。 STEP3:機器人動起來! 按下「執行」按鈕就會讓機器人動起來, 在此使用了NxtDrive 中的MoveForward 指令, 接著將上一步中從掃瞄結果切出來的文字依序塞到MoveForward 指令的component、power與distance欄位。

Android二維條形碼輕鬆玩樂高機器人
圖6 填入MoveForward 指令的對應欄位。 STEP4:斷線 按下[ 斷線] 按鈕之後, 會中止藍芽聯機(BluetoothClient.Disconnect指令),並使按鈕恢復到未聯機時的狀態。這時候您可以再次發起聯機。

Android二維條形碼輕鬆玩樂高機器人
圖7 按下[ 斷線] 按鈕時中斷藍芽聯機。 STEP5:造訪CAVE教育團隊網站 點選畫面下方的CAVE 教育團隊圖案就能造訪我們的網站, 這是透過ActivityStarter 元件將網址指定給瀏覽器所完成的。為了避免使用者誤觸按鈕就直接跳出程式,我們使用了Notifer 元件來產生一個確認視窗(圖9),當使用者點選「YES」時就會跳離程式,並啟動手機上的瀏覽器來造訪網站。

Android二維條形碼輕鬆玩樂高機器人
圖8 按下CAVE 影像後顯示對話視窗,點選OK則開啟網站。

Android二維條形碼輕鬆玩樂高機器人
圖9 顯示對話視窗來詢問是否跳離程式。 操作: 實際執行的時候,請先確認NXT 已經開機且藍芽也啟動了。請先點選「選擇裝置」來選擇NXT 主機,接著點選「掃描二維條形碼」按鈕來掃描本文中所附的二維條形碼,最後再按下「執行」按鈕。機器人是否順利地動起來了呢?本範例結合Android 程式中常用的二維條形碼掃描功能控制機器人,您可以運用巧思製作一系列條形碼讓機器人進行尋寶大作戰。使用條形碼產生網站來設計更多條形碼內容來豐富您的機器人!原文來源至:partner.henkel.com.cn/local/index…

Android二維條形碼輕鬆玩樂高機器人
BC馬達以電力50前進

Android二維條形碼輕鬆玩樂高機器人
BC馬達以電力30後退

Android二維條形碼輕鬆玩樂高機器人
BC馬達以電力60原地右旋轉

Android二維條形碼輕鬆玩樂高機器人
BC馬達以電力(40, 80)朝左前方移動

相關文章