MBC 測距者 8 路 × EV3 Classroom

三個步驟用 EV3 Classroom 讀測距者

在 EV3 Classroom 裡,測距者 8 路會被當成樂高的紅外線感應器,所以不用匯入函式庫、不用裝擴充,直接用紅外線感應器的積木讀。左邊一步一步做,右邊的積木會跟著長出來;這些積木圖是用 EV3 Classroom 1.5.3 拼好後直接從軟體畫面匯出的,跟你在軟體裡看到的一樣。EV3 Classroom 沒有繁體中文介面,所以積木是英文。

1

開始:程式開始+一直重複

讀感應器要一直重複讀。新專案裡已經有黃色的「when program starts」,下面接「forever」(一直重複),裡面放「wait 0.1 seconds」,每 0.1 秒讀一次。

  1. 打開 EV3 Classroom,按「New Project」開一個新專案。
  2. 從「Control」拖出「forever」,接在「when program starts」下面。
  3. 再拖一顆「wait 1 seconds」放進 forever,數字改成 0.1。
2

認識讀值積木(紅外線感應器)

測距者 8 路插在 EV3 上會被當成樂高的紅外線感應器,所以用「Sensors」裡紅外線感應器的積木讀,不用裝擴充。積木最前面的數字是孔號,選 1(感應器插 1 號孔)。產品把不同的值放在不同的積木裡:

積木讀到的是範圍
proximity正前方距離0 ~ 100(1 格 = 1.2 公分,100 = 前面沒東西)
heading to beacon 1每一顆的距離(第 1 個:D1)0 ~ 100(1 格 = 1.2 公分)
proximity to beacon 1每一顆的距離(第 2 個:D2)0 ~ 100(1 格 = 1.2 公分)
beacon 1 buttons pressed最近的東西在哪個方向-7 ~ +7(負 = 左、正 = 右;±8 = 沒有東西)
beacon 2 buttons pressed最近的東西有多遠0 ~ 100(1 格 = 1.2 公分)
beacon 3 buttons pressed最空曠的方向-7 ~ +7(負 = 左、正 = 右)
beacon 4 buttons pressed最空曠方向的距離0 ~ 100(1 格 = 1.2 公分)

一支程式只用同一種模式的積木(近接、信標、遙控三選一)。EV3 每換一次模式要卡約 1.1 秒。

3

顯示在 EV3 螢幕上

把讀值積木放進「Display」的「write … at line …」,前面用「Operators」的「join」加一個名字(例如 POS),程式一開始先放「clear display」清螢幕。點一個功能,積木和結果會換成它的範例。

模擬感應器(從上面看,車頭朝上):拖動障礙物,看右邊的輸出怎麼變

模擬畫面是示意:只用畫面上障礙物的位置換算,EV3 的距離 = 公分 × 100 ÷ 120,不是感應器內部的算法。

每個功能的積木範例

EV3 Classroom 讀得到的值,每個都有一支可以照著拼的小程式(感應器插 1 號孔)。按「試試看」會切到第 3 步。

EV3 Classroom 讀不到的:公釐(mm)距離、每一顆的公釐距離、雷射初始化與故障狀態。韌體 v4.0 新增的模式 3~6(例如公釐距離、位元圖、連線狀態、裝置 ID)EV3 Classroom 的積木也讀不到。要用這些,改用 Pybricks(EV3 要換開機卡)或 clev3r。

使用注意

  1. 感應器插 1 號孔。插別的孔,就把積木上的孔號改成那一孔。EV3 要先開機再插感應器;數字一直不動時拔掉重插一次。
  2. 一支程式只用一種模式。近接、信標、遙控三種模式,EV3 每換一次要卡約 1.1 秒,比賽時車子可能失控。
  3. 拔掉感應器時:EV3 讀不到,數字變成「不是數字」,螢幕顯示 ----,而且每讀一次要等約 1.2 秒;程式不會停,插回去會自動恢復。
  4. 單位:EV3 上 1 格 = 1.2 公分,100 = 那個方向沒東西(或那顆雷射故障)。要公釐請改用 Pybricks 或 clev3r。
  5. 方向:站在車後面往前看,負數 = 左邊、正數 = 右邊;第 1 顆在正左、第 8 顆在正右。最近方向 ±8 = 四周沒東西。
  6. 積木是英文:EV3 Classroom 只有英文和簡體中文介面,本頁用英文介面。
  7. 想看完整的應用範例(循線、避障、開車……):到 EV3 範例頁,大部分範例都有 EV3 Classroom 檔可以下載。