LEGO® MINDSTORMS® EV3 Classroom
+
警告
請注意:您目前觀看的是 【EV3 Classroom】 環境的教學。 如果您使用的是 SPIKE 或是其他 EV3 軟體,請點擊上方按鈕回到主機選單重新選擇。
適用於 LEGO® MINDSTORMS® EV3 Classroom App(Scratch 積木風格)。在此環境下,循行者 8 路感應器會被樂高系統完美識別為官方的 Infrared Sensor(紅外線感應器)。
重要
EV3 硬體重要通訊延遲警告 由於樂高原廠 EV3 主機的硬體通訊機制限制,當程式在不同積木模式(例如從 Proximity 切換至 Remote)進行切換讀取時,主機會產生約 0.5 秒的物理通訊等待延遲,這在高速比賽中可能導致車體失控。 強烈建議:請依據您的任務需求(例如:只用 Remote 進行 PID 循線),在程式一開始選定一種積木,整趟任務請勿中途切換讀取種類!
與官方 EV3 軟體的差異 Classroom App 的積木外觀是 Scratch 風格,但感應器讀取模式與官方 EV3 軟體完全一樣:Proximity / Beacon / Remote 三種模式,回傳數值範圍也完全相同。
讀取線位置 — Proximity 模式
使用感應器積木,選擇 Proximity(接近)模式,讀取 數值 即可取得線位置。
| 回傳值 | 範圍 | 說明 |
|---|---|---|
| 線位置 | -8 ~ +8 |
👉 0 = 黑線在正中央,負數偏左,正數偏右;±8 表示線在感應器最邊緣。
|
讀取 8 路光電反射值 — Beacon 模式
使用感應器積木,選擇 Beacon(信標)模式,讀取 數值列表(8 bytes)。
| Byte | 內容 | 範圍 | 怎麼讀 |
|---|---|---|---|
| 0 | 第 1 路反射值 | 0 ~ 100 | 信標 頻道 1 的「方向」 |
| 1 | 第 2 路反射值 | 0 ~ 100 | 信標 頻道 1 的「近接(距離)」 |
| 2 | 第 3 路反射值 | 0 ~ 100 | 信標 頻道 2 的「方向」 |
| 3 | 第 4 路反射值 | 0 ~ 100 | 信標 頻道 2 的「近接(距離)」 |
| 4 | 第 5 路反射值 | 0 ~ 100 | 信標 頻道 3 的「方向」 |
| 5 | 第 6 路反射值 | 0 ~ 100 | 信標 頻道 3 的「近接(距離)」 |
| 6 | 第 7 路反射值 | 0 ~ 100 | 信標 頻道 4 的「方向」 |
| 7 | 第 8 路反射值 | 0 ~ 100 | 信標 頻道 4 的「近接(距離)」 |
每一路都是校準後的反射值:
0=最暗(黑線)、100=最亮(白底)。第 1 路在最左邊(站在車子後面、面向車頭看)。
讀取位置 + 寬度 + 邊界防禦 — Remote 模式 (競技戰術推薦!)
使用感應器積木,選擇 Remote(遙控)模式,讀取 數值列表(4 bytes)。
| Byte | 內容數據 | 數值範圍 | 戰術解讀說明 |
|---|---|---|---|
| Byte 0 | 高解析位置平移 | -100 ~ +100 |
👉 0 代表正中央,負值偏左,正值偏右。超平滑的 PID 誤差輸入首選!
|
| Byte 1 | 特徵線寬 | 0 ~ 8 | 👉 觸發的感測器數量。可用於偵測十字路口或 T 字路口。 |
| Byte 2 | 左邊界實體光值 | 0 ~ 100 |
👉 dataIrCalib[0](第 1 路)最左邊感測器的反射光。0=純黑,100=純白。可用於偵測賽道邊界或分岔。
|
| Byte 3 | 右邊界實體光值 | 0 ~ 100 |
👉 dataIrCalib[7](第 8 路)最右邊感測器的反射光。0=純黑,100=純白。可用於偵測賽道邊界或分岔。
|
戰術防呆技巧:Remote 模式的 Byte 2 與 Byte 3 能讓您在 Classroom 積木中直接獲得感測器兩側的最邊緣光值。如果兩個數值同時小於 20,表示車頭完全進入十字路口的橫線中;如果其中一邊數值突變,表示即將進入分岔,是防掉線的終極法寶!
範例程式下載
上圖為 8路循線感應器於 LEGO® MINDSTORMS® EV3 Classroom 中的經典 PID 循線程式結構示範
EV3 專屬自訂積木 (My Blocks) 說明
為了讓 EV3 Classroom 的程式撰寫更為簡潔直覺,MBC 8 路循線感應器提供了三個強大的「自訂積木(My Blocks)」。開發時不需要額外安裝繁瑣的擴充包,只需在主程式中呼叫對應的函數,系統就會自動在背景解析硬體封包,並將最新的感應器數據存入專屬變數中,供馬達控制邏輯直接使用。
以下為三個核心函數的功能與使用時機介紹:
1. 基礎循線函數:LinePos8_dataUpdate
- 功能目的:快速讀取最基礎的 8 段循線位置,適合新手入門教學與基礎左右轉向判斷。
- 更新變數:執行此函數後,系統會自動更新變數
0_LinePos8。 - 數值解析:範圍落在
-8到+8之間。 - 物理直覺:黑線在左邊為負值、在正中央為 0、在右邊為正值。
2. 競技高精度函數:LinePos100_dataUpdate
- 功能目的:取得高解析度次像素級插值位置,最佳 PID 循線選擇。專為高階 PID / PD 循線控制演算法(適用於各類競速賽事)所設計,能提供極致平滑的修正動力。使用前提是必須確實完成感應器校準,校準越精確數值越準確。
- 更新變數:執行此函數後,會同步更新多個關鍵變數:
0_LinePos100:高精度位置,範圍-100到+100(同樣維持左負右正的標準)。0_LineWidth8:即時線寬偵測,數值代表目前觸發的感應器數量(範圍0到8)。可用於精準判斷十字路口、T 型路口或終點停止線。- 最左 / 最右邊界數值:同步讀取最左邊與最右邊感應器的實體光值,方便使用者作防掉線或交叉路口等進階策略調整。
3. 全陣列展開函數:LineCh8_dataUpdate
- 功能目的:將 8 顆感應器徹底解碼為獨立狀態,適用於撰寫自訂的特殊路口判斷演算法、特定位置的感應器觸發監控,或是將 8 顆感應器的狀態直接繪製於 EV3 主機的螢幕畫面上。
- 更新變數:執行此函數後,會一氣呵成地更新
s1到s8共 8 個獨立變數,完美對應感應器由左至右每一顆的即時讀數。
提示
開發小提醒 這三個函數的底層技術,是巧妙利用了 EV3 內建紅外線感應器(設定於 Port 4)的多頻道切換(Channel 1~4)來傳輸大量資料。實際開發時,只要將這些自訂積木放入「重複無限次」迴圈中,即可確保循線車隨時掌握最即時的賽道資訊!
提示
想要學更厲害的循線控制方法嗎? 可以找這幾位厲害的教練上課唷!他們有非常豐富的比賽與教學經驗,保證讓你收穫滿滿~ 💯

