[2014 Robocon雜誌專欄]輕鬆使用Android 裝置控制樂高機器人:機器人感測器如何結合Google雲端圖表
2014 年3月號的 [輕鬆使用Android 裝置控制樂高機器人] 系列來了,結合了機器人感測器與 Google Chart 雲端圖表功能,讓您的機器人在資料呈現上更豐富有趣。泛科學文章連結:http://pansci.tw/archives/57646
文/曾吉弘(CAVEDU教育團隊)
MIT 行動學習中心已發表 App Inventor 2 ,省略了需要使用 Java 才能開啟的 Blocks Editor,將其整合在網頁中即可使用,可說是與 Scratch 愈來愈像了。在操作上也將各指令藉由下拉式選單大幅簡化。不過App Inventor 2在指令上與前一版的App Inventor 是差不多的,相信您可以很快上手。請到App Inventor 中文學習網(http://www.appinventor.tw) 來登入App Inventor 2 開發網站並認識更多新功能。
本次是要把樂高NXT的光感測器值,每十筆為單位更新到GoogleChart 雲端圖表來取得折線圖。只要熟悉基本語法就可以產生各式各樣的圖表, 非常方便! 有接觸過App Inventor 的師長朋友們,歡迎從App Inventor 中文學習網下載原始碼回去加入更多有趣的功能。這次的主題範例需用到網路連線,請先確認您的手機是使用Wi-Fi 或3G 行動網路來連上網路,否則將無法顯示Google 雲端圖表。
圖3a 指定藍牙配對裝置清單。
圖3b 連線成功後啟動相關元件。
圖4 按按鈕記錄光感測器值。
圖5 按下按鈕顯示Google 雲端圖表。
圖6 按下「斷線」按鈕時中斷藍牙連線。
圖7a 程式初始畫面。
圖7b 紀錄感測器值時,數值會同時顯示在螢幕最上方。
圖7c 產生Google 雲端折線圖。
本程式已上架Google play,請到Google Play 搜尋「CAVEDU 教育團隊」就找得到我們的樂高機器人系列app 了。請在App Inventor 中文教學網上直接下載本範例的App Inventor 原始檔與apk 安裝檔。
註1:想學如何開發App Inventor程式嗎?請到App Inventor中文學習網與我們一同學習。
註2:將Android手機設定為可安裝非Google Play下載的程式以及讓手機與樂高NXT主機連線等說明請參考此連結。
註3:與NXT連線後如果出現[Error 402]之錯誤訊息請不必理會,程式依然能正確執行。
文章原文刊載於《ROBOCON》國際中文版2014/3月號
光感測器
樂高NXT 套件中的光感測器前端有兩個燈泡,一個是普通燈泡,另一個則是光敏電阻,可將前方物體的反射光強度由亮到暗(或由白到黑)回傳100~0 之間的整數(integer)。在App Inventor 中,我們使用NxtLightSensor元件的GetLightLevel 指令來取得光感測器值(圖1)。
開始玩機器人
範例的機器人只要將一個光感測器接在NXT 主機的3 號輸入端即可。請確認NXT 主機的藍牙是啟動的,接著將NXT 主機與Android 手機進行藍牙配對(註2),完成之後就可以把機器人放到一邊了。啟動藍牙之後您可以從NXT 主機的螢幕左上角看到藍牙的符號。 接下來依序介紹程式的各個功能:STEP1 登入畫面:
首次進入程式的畫面如圖2a , 您會看到畫面中央載入了CAVE 技術部落格(https://blog.cavedu.com) 的畫面, 這是WebViewer 元件的最重要功能,可用來載入網頁,本範例的Google 雲端圖表也是以此方式載入。另外, 這時只有「連線」按鈕可以按,其它所有按鈕都無法操作。點選「連線」按鈕後進入藍牙裝置清單(圖2b),請找到剛剛配對完成的NXT 主機名稱(本範例為abc),點選之後就會由Android 裝置對NXT 主機發起藍牙連線。順利連線成功的話, 「連線」按鈕會變成不可按的狀態,只有「斷線」按鈕可以按(圖2c)。
STEP2 程式初始化:
在點選連線清單之前(ListPickerConnect 的BeforePicking 事件),需先將清單內容指定為Android 裝置上的藍牙配對清單(圖3a)。點選之後則先測試連線是否成功,成功則將「NXT 主機/ 連線」設為不可點選,「記錄感測器值」與「斷線」等兩個按鈕設為可點選(圖3b)。
圖3a 指定藍牙配對裝置清單。
圖3b 連線成功後啟動相關元件。
STEP3 按鈕記錄光感測器值:
每當我們點擊一次「記錄感測器值」這個按鈕時,就會將光感測器當下的數值搭配一個半形逗號組合到sensorValue 這個字串中。接著, 使用count 這個變數來計算一共記錄了幾次,累計到10 次之後,count 變數值會設定為1 代表要重新開始記錄新的十筆資料。並且「產生圖表」這個按鈕會變為可按(圖4)。
圖4 按按鈕記錄光感測器值。
STEP4 按鈕取得Google雲端圖表:
Google Chart 雲端圖表讓我們可用超連結的方式來取得各式圖表。以本範例來說,我們只要將十筆光感測器值組合到chart 字串變數的後方, 再由WebViewer 元件去取得這個超連結就可以了。說穿了就是去操弄這個字串,就能取得我們所需要的圖表。讓我們來看看這個chart 這個字串中的一些重要參數: .http: / /char t .googleapis.com/chart? .chs=320×300:圖片尺寸為320 x300像素。 .cht=lc:圖表類型為折線圖(linechart)。 . chd=t : : 圖表資料, 我們就是把sensoValue這個變數組合在chart變數之後來組成一個完整的超連結。每筆資料之間需使用「, 」隔開。其餘的參數請您自行參閱Google Chart API網站。 按下這個按鈕( 圖5), 會先把sensorValue 最後一個字元( 就是半形逗號)刪除,接著使用WebViewer.GoToUrl 來載入chart 與sensorValue兩者所組合成的超連結。並且為了讓下次也能順利執行,最後要把sensorValue 內容清空。
圖5 按下按鈕顯示Google 雲端圖表。
STEP5 斷線:
按下「斷線」按鈕之後,會中止藍牙連線(BluetoothClient.Disconnect指令),並使畫面上的各個元件恢復到程式一開始時的狀態(圖6)。
圖6 按下「斷線」按鈕時中斷藍牙連線。
操作
實際執行的時候,請先確認NXT已經開機且藍牙也啟動了(圖7a)。接著在您的Android 裝置上點選畫面中的「NXT 裝置/ 連線」按鈕, 會進到如圖2b 的藍牙清單畫面,點選您所要的NXT 主機名稱並連線成功後,就能按下「記錄感測器值」按鈕來記錄光感測器值(圖7b),連按十次之後,即可點擊「產生圖表」來產生圖表(圖7c)。
圖7a 程式初始畫面。
圖7b 紀錄感測器值時,數值會同時顯示在螢幕最上方。
圖7c 產生Google 雲端折線圖。
小挑戰
我們為各位讀者準備了小挑戰,要不要挑戰看看呢?- 請將本程式改為計時器版本,與機器人成功連線之後,每秒記錄一次光感測器值, 每10秒更新一次畫面。(提示:使用Clock元件)
- 請製作下拉式選單(ListPicker)讓使用者可以調整所要顯示的感測器類型,例如聲音、顏色或超音波感測器等等。
- 請製作下拉式選單讓使用者可以調整所要顯示的圖表類型,例如折線圖、長條圖等等。(提示:將lc改為bvs就能將圖表改為長條圖)
本程式已上架Google play,請到Google Play 搜尋「CAVEDU 教育團隊」就找得到我們的樂高機器人系列app 了。請在App Inventor 中文教學網上直接下載本範例的App Inventor 原始檔與apk 安裝檔。
註1:想學如何開發App Inventor程式嗎?請到App Inventor中文學習網與我們一同學習。
註2:將Android手機設定為可安裝非Google Play下載的程式以及讓手機與樂高NXT主機連線等說明請參考此連結。
註3:與NXT連線後如果出現[Error 402]之錯誤訊息請不必理會,程式依然能正確執行。
文章原文刊載於《ROBOCON》國際中文版2014/3月號
留言 💬 (0)
還沒有留言,來當第一個。