MBC 循行者 16 路 × EV3 clev3r

三個步驟用 clev3r 讀循行者 16 路

clev3r(EV3 BASIC)程式照這個順序:先建立專案、選孔位,再設定感應器的模式,最後才讀值、顯示在 EV3 螢幕上。左邊一步一步做,右邊的程式會跟著長出來;拖動模擬感應器下面的黑線,就能看到 EV3 螢幕會顯示什麼。

1

建立專案、選孔位

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

  1. 安裝 clev3r(本站測試的版本是 v1.7.1.0)。
  2. EV3 先開機,再把感應器插進下面選的孔。
  3. 新增一個程式,寫下面這幾行。
  4. 寫好按「編譯並下載」,到 EV3 的檔案選單找 MBC_ 開頭的資料夾執行。
感應器插在哪個孔?

程式裡的第 1 個數字(例如 Sensor.SetMode(1, 0))就是孔位,1~4 對應 EV3 的 1~4 號孔。

2

設定模式

感應器有好幾種「模式」,每種模式一次送回幾個數字。Sensor.SetMode(孔, 模式) 選一種。一個程式只用一種模式:EV3 每換一次模式要等約 1.1 秒。

選一種模式(第 3 步選到別的模式的讀值,這裡會跟著換):

3

讀值、顯示在螢幕上

Sensor.ReadRawValue(孔, 第幾個) 拿目前模式的第幾個數字(從 0 開始數),LCD.Text 把它寫在 EV3 螢幕上。EV3 螢幕只能顯示英文和數字,所以標籤用英文縮寫。點一個讀值,程式和螢幕會換成它的範例。

模擬感應器(從車子後面往前看):拖動黑線,看右邊的輸出怎麼變

模擬畫面是示意:數值算法簡化過,實際感應器可能差一兩格。圓圈裡是那一路的光值(SPIKE:0 = 黑、15 = 白);紅框 = 那一路判斷在線上。

每個讀值的範例

完整範例


        

!


        

!


        

!

使用注意

  1. EV3 版不能從主機下命令(E0~E9 都送不了,原廠韌體、Pybricks、ev3dev 都一樣)。插上電時按住板子按鍵=白線模式(沒按=黑線);運作中按校準按鈕=5 秒動態校準。左右反向、門檻 EV3 版沒有,要用請改 SPIKE 版或 I2C 版。Pybricks 的 InfraredSensor.buttons() 不能用(模式 2 是線位置,會出 OSError 5),請用 MBC 函式庫或 LUMPDevice。
  2. 一個程式只用一種模式。EV3 每換一次模式要等約 1.1 秒。循線最常用模式 2:細位置 [0]、線寬 [1]、最左 [2]、最右 [3] 一次都拿得到。
  3. 拔線時讀到 0。clev3r 的 Sensor.ReadRawValue 拿不到資料時回傳 0,程式不會停。要知道有沒有接好,用「感應器有接好嗎」那張卡的 Sensor.GetType。在右邊勾「拔掉感應器」試試看。
  4. 方向:站在車後面往前看,線在左邊是負數、右邊是正數;第 1 路在最左邊。
  5. EV3 螢幕只能顯示英文和數字。LCD.Text 的字串用英文縮寫(例如 POS、WIDTH),後面多加幾個空白,蓋掉上一次比較長的數字。
  6. clev3r 讀不到的:線段數(EV3 沒有送)。16 路光值每路只有 1 ~ 9(兩路擠一格)。位元圖、身分、韌體版本(模式 3、5)要感應器韌體 v4.0 以後。