2018-04-10

以 LEGO Boost 與 Scratch 2 製作互動遊戲

LEGO Boost 除了使用行動裝置上官方所提供的 app 編寫程式外, 也可以在電腦上透過 S2Bot 以 Scratch 2 控制,  這樣正好能夠運用 Scratch 的遊戲編程功能 以及 Boost 的馬達與感應器, 製作出生動有趣的互動遊戲.
下面的影片就是一個結合兩者所製作的「顏色輪盤遊戲」, 玩法如下: 
  1. 先由 Scratch 2 顯示讓玩遊戲的人可以挑選所要下注顏色的畫面.
  2. 下注之後啟動Boost 的顏色輪盤隨機旋轉至某一個顏色, 再藉由 Boost 的顏色感應器讀取比對輸贏狀態.
  3. Scratch 會因應本局的輸贏, 變更舞台背景並計算剩餘的籌碼, 而且當贏局時 Boost 還會表演一小段歡呼動作作為獎勵.
  4. 一旦輸光所有籌碼, 本次的遊戲就隨之結束.


LEGO Boost 「顏色輪盤遊戲機」構造

遊戲機的構造全部都是使用 LEGO Boost 17101 的零件組合而成, 包含兩個內建馬達與一個外接馬達以及顏色感應器全部都用上, 各部分的功能如以下圖片說明:


使用 S2Bot app 連接 Boost 與 Scratch 2


S2Bot app 的功能是提供 Scratch 2 能夠以藍芽方式無線遙控 LEGO Boost, 包含: 馬達控制讀取感應器, 而執行 Scratch 的電腦, 無論是 Windows 或 Mac,  都必須使用 BLED112 藍芽配接器, 才能連接 Boost. 
  1. 此處 下載安裝 S2Bot app .
  2. 執行 S2Bot app, 由左上方下拉選單中挑選 LEGO Boost , 接著點按 Scan for Devices 開啟對話框連接 Boost.
  3. 若是首次連接 Boost, 再點按右上方的下拉選單按鈕, 選擇 New Scratch template 產生 Boost 的 Scratch 程式積木範本: boost_template.sb2 並存檔於電腦中.
  4. 在 Scratch 2 中透過 File->Open 開啟 boost_template.sb2, 即可於腳本區的 More Blocks 中使用 Boost 的程式積木.


以 Scratch 2 控制 LEGO Boost 馬達


使用 Scratch 2 腳本區中 More Blocks 的 Boost 程式積木可以控制 Boost 的兩個內建馬達(Motor A 與 B) 以及外接馬達(Port C 或 D) 的速度' 方向' 位置   運轉時間.
 Boost 馬達內建位置感應器, 精確度如同 EV3/NXT 一樣, 每一圈 360 階, 惟要注意的是 Boost 的兩個內建馬達是車輛模式配置, 所以兩者旋轉方向與位置值的變化關係正好相反, 當以順時針方向旋轉時, Motor A 的位置值變化是負增量, Motor B 是正增量, 至於外接馬達則與 Motor B 一樣為正增量.
在 More Blocks 中提供了四個變數: SensorA' B' C' D 用來讀取馬達位置感應器的值, 即使手動方式旋轉馬達感應器的值也會有變化, 可以透過程式積木將位置值歸零.

Boost 的距離/顏色二合一感應器

Boost 的外接感應器可同時偵測物體的距離與顏色, 使用  distancecolor 兩個變數讀取.

  • 距離感應器: 可偵測距離約在 30cm 以內, 近距離時(小於 5cm)回傳 0-10 的值, 增量為 1, 大於 5cm 時回傳 10-100, 增量為 10, 若未偵測到任何障礙物回傳 100 的值.
  • 顏色感應器: 可辨識六種顏色, 回傳值分別為: (0)' (3)' (5)' (7)' (9) 與 (10), 若未偵測到任何顏色則回傳 255.

Boost 本體的內建感應器


Boost 除了外接的 距離/顏色感應器 之外, 本體 (hub) 也內建幾個感應器, 在 More Blocks 中都有對應的變數積木可用來讀取:
  • 傾斜感應器(Tilt sensor): 會偵測本體目前的姿態, 使用 tilt 變數讀取感應器值, 據 文件 上說明可以回傳 0-5 六個姿態值, 實際測試則只有五種值, 分別為: 平放(0)' 左/右傾斜(4/2)' 直立(1/3), 另外, 還可以使用 tiltxtilty 兩個變數讀取以角度為單位更精確的兩軸傾斜值.
  • 按鍵狀態: 使用 「button pressed ?」 積木, 可以判斷本體上的綠色按鍵是否正被按下( 回傳 true/false ).
  • 電流感應器(Current sensor): 使用 current 變數讀取, 實際測試當馬達運轉受到外力阻礙時, 感應器的值會驟增.
  • 電壓感應器(Voltage sensor): 使用 voltage 變數讀取, 可用來判斷電池的電量狀態, 正常值約在 3.2V 左右.


改變 Boost 的 LED 顏色


透過「set hub light to __」積木, 可以變更 Boost 本體上 LED 的顯示顏色, 共有十種顏色可以選擇 或 設定成 off 狀態.

結論 與 心得


這次試著以 LEGO Boost 與 Scratch 2 製作一個互動遊戲, 過程中對於 Boost 無論是馬達的精準程度' 感應器的功能等使用體驗, 感覺上相當的實用, 特別是 S2Bot app 為 Boost  所提供的Scratch 程式積木(建議下載最新的 v0.8.4 ), 確實能夠充分發揮 Boost 硬體所具備的功能, 即使玩過 NXT/EV3, 仍然覺得是值得入手的 LEGO Set. (感謝 創意科技 林老師的協助) 
唯一的限制就是 Technic 零件不多,  不過, 可以使用補充零件來加強, 並非問題.


沒有留言:

張貼留言