這頁內容已整合到新的說明頁:循行者 16 路 › EV3 › Pybricks

pyBricks for EV3

回到 EV3 主機選單

EV3 Hub + EV3 pyBricks

警告

請注意:您目前觀看的是 【EV3 pyBricks】 環境的教學。 如果您使用的是 SPIKE 或是其他 EV3 軟體,請點擊上方按鈕回到主機選單重新選擇。

適用於在 LEGO® MINDSTORMS® EV3 主機上安裝 pyBricks 第三方韌體的使用者。在高階的 Pybricks MicroPython 環境下,玩家可以完全繞過官方的通訊與模式限制,以最精簡、高效的方式與 16 路循線感應器進行高速通訊!

注意

韌體版本 code.pybricks.com 正式版已內建 EV3 韌體(2026-10 是 v4.1.1)。本頁範例最早在 v4.0.0b10 上機測過,v4.1.1 寫法相同。

重要

模式切換等待延遲警告 由於 EV3 硬體底層的通訊機制限制,當程式在不同底層讀取模式之間進行切換時,仍然會產生通訊等待延遲。 強烈建議:為了確保程式穩定性與高速反應,請根據任務需求選定一種模式使用,不要在主迴圈中頻繁交叉呼叫不同模式的函數(下方函數已為您標註所屬模式群組)。


讀取方式與核心模式

在 EV3 Pybricks 環境中,本循線感應器提供兩種靈活的資料讀取管道,適應不同的專案需求:

  1. **原生指令讀取 (device.mode)**:直接切換感應器的底層 UART 模式來獲取陣列數據,操作最為直接。
  2. **導入專屬庫函數 (Library Functions)**:透過導入我們封裝好的 Python 函數,能獲得如同積木般直覺的獨立變數回傳,大幅簡化程式碼邏輯。

範例程式與函數下載 (打包下載)

我們為您提供了核心範例程式以及專屬庫函數。請依照您的開發習慣選擇:

⚡

方式一:原生指令讀取

使用 Pybricks 底層的 hub.port.X.device.mode(mode) 直接獲取陣列數據。

device.mode(0) Tuple (1 Byte)

新手模式:回傳標準位置平移值 [-16, 16],0 為中央。

device.mode(1) Tuple (8 Bytes)

全覽除錯模式:回傳 16 路壓縮光值。相鄰兩路壓縮為一個兩位數(11~99)。

device.mode(2) Tuple (4 Bytes)

競技戰術專武:回傳高精度位置 [-100, 100]、線寬 [0, 16]、左邊界實體光值與右邊界實體光值。

⏳

等待 pyBricks 官方指令更新

由於官方尚未將對應的圖形與底層指令製作更新,本區塊原生範例程式將於日後補齊。
目前強烈建議您直接使用下方的「方式二:導入專屬庫函數」進行高階開發!

🔬

方式二:導入專屬庫函數

透過導入封裝好的 Python 副程式,能獲得獨立變數回傳,大幅降低程式碼複雜度。

可用函數一覽

— 由 MBC_line16_EV3_Lib.py 提供
⚙️ 初始化
line_init_port_multitask(port, multitask)

初始化感應器連接埠。port 傳入 EV3 埠物件(例如 hub.port.S1)。
👉 非多工模式:第二參數 multitask 請填入 False,呼叫函數時前方條件請選擇 call。
👉 多工模式:第二參數 multitask 請填入 True,呼叫函數時前方條件請選擇 await。

非多工狀態設定 (常規使用)
非多工狀態設定
多工狀態設定 (非同步 / await)
多工狀態設定
🟢 模式 0 (新手/基礎循線)
[模式 0: 基礎]line_pos16() -16 ~ +16

取得整數解析度的循線位置。0 為正中央,負數偏左,正數偏右。

🟡 模式 1 (全覽/除錯/自訂算法)
[模式 1: 解碼]line_ir_ch(ch) 1 ~ 9

取得單一感應器通道的即時量化光值。ch=1~16。1=最暗,9=最亮。

🔵 模式 2 (競技/PID 循線專用)
[模式 2: 競技]line_pos100() -100 ~ +100

高解析度次像素級插值位置,專為高階 PID / PD 控制設計。

[模式 2: 競技]line_width() 0 ~ 16

取得特徵線寬(觸發的感測器數量)。可用於偵測路口與寬線。

[模式 2: 競技]line_edge_l() 0 ~ 100

取得左邊界感測器的實體光值(0=黑, 100=白),用於防掉線。

[模式 2: 競技]line_edge_r() 0 ~ 100

取得右邊界感測器的實體光值(0=黑, 100=白),用於防掉線。

重要

模式切換等待延遲警告 由於 EV3 硬體底層的通訊機制限制,當程式在不同底層讀取模式之間進行切換時,仍然會產生通訊等待延遲。 強烈建議:為了確保程式穩定性與高速反應,請根據任務需求選定一種模式使用,不要在主迴圈中頻繁交叉呼叫不同模式的函數(上方函數已為您標註所屬模式群組)。

實戰建議:強烈建議一般使用者與競賽選手全程使用 [模式 2: 競技] 的函數群;
只有當您需要讀取所有感測器原始數值,進行「自訂特殊演算法」開發時,才建議單獨使用 [模式 1: 解碼]。

Block 模式 (專屬庫函數)

Block 模式 (導入專屬庫)

圖形化積木結合我們為您開發的專屬庫函數,在積木開發下輕鬆取得高解析度高精度數值。

下載範例 (.py)
MicroPython 模式 (專屬庫函數)

Python 模式 (導入專屬庫)

高階選手的最佳方案!導入專屬庫進行最底層的完整數據調用與高頻 PID 循線算法開發。

下載範例 (.py)

EV3 pyBricks 專屬庫函數 (Library File)

16路循線感應器專屬 Pybricks 庫函數

這是配合「導入專屬庫」範例不可或缺的驅動核心。請下載此庫檔案,即可完美啟用高階插值位置與 16 路光電數值精細讀取。

下載專屬庫函數 (MBC_line16_EV3_Lib.py)

重要提示:檔案放置位置

請確保將 MBC_line16_EV3_Lib.py 檔案直接匯入到您的 Pybricks 專案中,且檔案名稱必須完全一致,主程式的 import 指令才能正確載入函數!

Pybricks 匯入庫檔案示範

提示

想要學更厲害的循線控制方法嗎? 可以找這幾位厲害的教練上課唷!他們有非常豐富的比賽與教學經驗,保證讓你收穫滿滿~ 💯

LINE 詢價選購指南