MBC 神攝手 × EV3 clev3r(EV3 BASIC)

三個步驟用 clev3r 讀神攝手

clev3r 不用函式庫:神攝手在 EV3 上是一顆樂高原廠紅外線感應器,每個 EV3 模式送回幾個數字(格子),每格放什麼由相機模式決定。照順序做:先建立專案、選好相機模式,再選孔位、設定 EV3 模式,最後讀格子、拆成值、顯示在 EV3 螢幕上。左邊一步一步做,右邊的程式會跟著長出來;在模擬的相機畫面裡拖色塊、色紙、積木、線或形狀,就能看到 EV3 螢幕會顯示什麼。

EV3 已上機驗證2026-11-03 用出貨版韌體 v1.0-261101 在實機跑過:原廠 EV3 韌體(EV3-G 紅外線積木、13 個相機模式逐格讀)、Pybricks v4 範例 1~4;ev3dev/EV3 MicroPython v2 只核對模式表(跟原廠紅外線感應器相同)。EV3 版不能從主機下命令,相機模式在相機 MENU 切。

1

建立專案、選相機模式

clev3r 不用裝擴充,也不用匯入檔案:神攝手在 EV3 上會模擬成樂高原廠的紅外線感應器(類型 33),直接用 Sensor 指令讀。第一行 folder 決定程式放在 EV3 的哪個資料夾。

  1. 安裝 clev3r(本站測試的版本是 v1.7.1.0),新增一個程式,寫右邊的幾行。
  2. 相機用 EV3 線插 1~4 號孔,由主機供電;EV3 先開機再插。
  3. 寫好按「編譯並下載」,到 EV3 的檔案選單找 MBC_unicam 資料夾執行。
  4. 選相機模式:在相機的 MODE 選單選相機模式和子選項,下面點同一個模式編號(模式編號=相機模式 ×10+子選項)。同一個 EV3 格子在不同相機模式放的東西不一樣。
2

選孔位、設定 EV3 模式

Sensor.SetMode(孔, EV3 模式) 選紅外線感應器的哪一個模式,之後讀到的格子都是這個模式的。這裡的「EV3 模式」跟相機選單的「相機模式」是兩回事:

  • EV3 模式 0 近距(1 格):相機現在的模式編號(例 13)。
  • EV3 模式 1 信標(8 格,第 0~7 格):大部分的值都在這裡。
  • EV3 模式 2 遙控(4 格,第 0~3 格):模式 11、21 的第 9~12 色/點、照順序第 9~11 塊和總塊數、循線左右緣、遠處線寬、標記線條數、物體 5 和物體數。
  • EV3 模式 3、4 一直送 0(不用);EV3 模式 5(2 格):裝置 ID 和韌體版本。
相機插在哪個孔?

程式裡 Sensor.SetMode(1, 1) 的第 1 個數字是孔位(1~4 號孔),第 2 個是 EV3 模式;EV3 模式跟著第 3 步選的讀值走。一個程式盡量只用一種 EV3 模式:每換一次要等約 1.1 秒。

3

讀格子、顯示在 EV3 螢幕上

Sensor.ReadRawValue(孔, 第幾格) 拿目前 EV3 模式的第幾格(從 0 開始數),一格常放兩個數字(例 X×10+Y),用 Math.Floor(v / 10)、Math.Remainder(v, 10) 拆開;LCD.Text 寫在 EV3 螢幕上。功能依相機模式分組,虛線框的是別的相機模式用的,要換模式才能用(點下去會幫你換)。EV3 螢幕只能顯示英文和數字,所以標籤用英文縮寫。

模擬相機畫面:拖動畫面裡的東西,看右邊的輸出怎麼變

模擬畫面是示意:數值直接用畫面上的位置換算(X 0~159 左→右、Y 0~119 上→下、面積 %=寬×高÷整個畫面),色相碼是那張色紙/積木本來的顏色(紅 0、黃 40、綠 80、藍 160、紫 200、白桌面 244、黑膠帶 252),不是相機裡面的算法;實際數值會因光線差一些。顏色追蹤假設相機上已經教了 4 色:色 1 紅、色 2 綠、色 3 藍、色 4 黃。物體偵測的形狀是你直接選的(不是相機判斷的),物體 1、2…照面積由大到小排,X、Y 是形狀的質心(白點)、虛線框是外框,角度就是你轉的角度。

每個功能的範例

每個讀值都有一段可以直接放進 clev3r 的範例:先 Sensor.SetMode 選 EV3 模式,再在 While 迴圈裡讀。右上角標它能用的相機模式;同一個值在不同相機模式可能在不同格,範例照目前選的模式寫。按「試試看」會切到第 3 步。

完整範例

按「複製」拿到完整程式。更多範例在 EV3 範例頁(Pybricks 寫法,格子排法一樣)。

跟著色塊轉(模式 13,左輪 B、右輪 C)

        

!先在相機上教「目標 1」的顏色,相機選單切到模式 13。X 是 8×6 格換成像素(格子中心),色塊在左=X 小於 80=往左轉。轉反了就把 0.3 改成 -0.3。

循線(模式 41 黑線,左輪 B、右輪 C)

        

!相機斜看前方地面。第 5 格的個位數是有線旗標,0=看不到線,就往最後看到的那邊原地轉找線;偏移在左=負,所以左輪少一點、右輪多一點就往左轉。

螢幕列出物體(模式 51)

        

!相機選單切到模式 51,先教目標色 1~8(教色時可以指定形狀)。EV3 模式 1 有物體 1~4 的代碼和格子;物體 5 和物體數在 EV3 模式 2,換模式要多等約 1.1 秒,所以這個範例只讀模式 1。

使用注意

  1. 拔線時讀到 0,程式不會停。clev3r 的 Sensor.ReadRawValue 拿不到資料時回傳 0:位置 0=「沒看到」,色相 0 會被當成紅色。要知道有沒有接好,用「感應器有接好嗎」那張卡的 Sensor.GetType(接好是 33)。在右邊勾「拔掉感應器」看看。
  2. 相機選單的模式要跟程式寫的一樣。同一格在不同相機模式放的東西不一樣,不一樣時數字沒有意義。clev3r 可以讀 EV3 模式 0 拿到相機現在的模式編號,先確認再讀(「相機現在是哪個模式」那張卡)。
  3. EV3 每換一次模式約 1.1 秒。大部分值在 EV3 模式 1;只有模式 11、21 的第 9~12 色/點、照順序第 9~11 塊和總塊數、循線左右緣、遠處線寬、標記線條數、物體 5 和物體數在 EV3 模式 2。同一個迴圈不要一直在兩個模式之間換。EV3 模式 3、4 一直是 0。
  4. 位置是 8×6 格:X×10+Y,X 1~8 左→右,Y 1~6 下→上(下=小,跟像素相反),0=沒看到。換成像素中心:X=(格 X−1)×20+10、Y=109−(格 Y−1)×20(畫面 160×120,上=0)。循線偏移:線在左=負、在右=正(站在車後面往前看)。
  5. EV3 一格只能放 −127~100。色相碼 0~240 送成「色相碼×100÷240」(0~100),白/灰/黑送負數 −1~−15;範例換回色相碼(±2)。模式 23 改送原始色相碼兩格(百位、餘數)。物體角度送「(角度+1)÷2」,乘 2 還原。顏色要在相機上教,程式改不了。
  6. EV3 螢幕只能顯示英文和數字,所以 LCD.Text 的標籤用英文縮寫,後面補空白蓋掉上一次比較長的字。