MBC 循行者 16 路 × MATRIX Mini R4(MATRIXblock)

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

在 MATRIX Mini R4 的 MATRIXblock 軟體裡,循行者 16 路會被當成原廠「顏色感應器」(I2C 位址 0x22),用內建積木就能讀,不用裝函式庫:先在「Mini初始化」的設置裡放顏色感應器初始化,再在循環裡放等待,最後把顏色感應器讀值積木放進循環。左邊一步一步做,右邊的積木會跟著長出來;這些積木圖是用 MATRIXblock 自己的積木程式畫的,跟你在軟體裡看到的一樣。

MATRIXblock 是 MATRIX 原廠的免費積木軟體(預設裝在 C:\matrixblock-r4\)。感應器要買 MATRIX 版,用原廠 4 pin 感應器線接 I2C1 或 I2C2。

1

初始化:循行者 16 路接哪個孔

程式的第一件事,是在藍色「Mini初始化」積木的「設置」裡放一顆「顏色感應器 ○ 初始化」,MATRIX 才會開始跟循行者 16 路說話。

感應器接在哪個孔?
  1. 打開 MATRIXblock。新專案的工作區已經有一顆藍色的「Mini初始化」積木(沒有的話到「Mini Core」類別拖一顆)。
  2. 左邊積木類別點「偵測」,找到「顏色感應器 I2C1 初始化」(不是「顏色感應器V3」)。
  3. 把它放進「設置」,下拉選單選 I2C1,跟感應器線接的孔一樣。
2

在循環裡放等待

「循環」裡的積木會一直重複。先放一顆「等待 100 毫秒」,讓它每 0.1 秒讀一次,資訊窗口的字才不會刷太快。

  1. 從「控制」拖「等待 1000 毫秒」放進「循環」,數字改成 100。

「Mini初始化」上的「序列埠:On」「Baud:9600」不要改:範例用「USB序列埠輸出…並換行」把數值印在資訊窗口(資訊窗口的鮑率也選 9600)。

3

使用讀值積木

「偵測」裡的「顏色感應器 I2C1 Red」積木,下拉選單有 7 格能用:Red、Green、Blue、Cyan、Magenta、Yellow、Key。每一格放的是循行者 16 路的一個值,下面每張卡告訴你那一格是什麼、怎麼換算。孔要選跟第 1 步一樣的(I2C1)。點一個功能,積木和輸出會換成它的範例;範例放在「循環」裡、等待的上面。

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

模擬畫面是示意:數值換算簡化過,實際感應器可能差一兩格。圓圈裡是 MATRIX 讀到的那一路等級(0 = 最暗、3 = 最亮);紅框 = 那一路判斷在線上。下面一排是七格讀到的數。

每個讀值的範例

11 個範例,每個都可以照著拼(I2C1 孔),積木放在「循環」裡、等待的上面。按「試試看」會切到第 3 步,右邊的積木和輸出會換成這個範例。

使用注意

  1. 只用七格:「顏色感應器」積木的下拉選單選 Red、Green、Blue、Cyan、Magenta、Yellow、Key(就是 R、G、B、C、M、Y、K),每格 0 ~ 255。不要選 ColorID、Hue、Saturation、Value(那是主機拿 Red、Green、Blue 自己算的,對 MBC 產品沒有意義),也不要用「顏色感應器V3」積木(那是 MATRIX 另一款感應器用的,讀不到循行者 16 路)。
  2. 拔線不會停程式:MATRIX 函式庫讀不到感應器時,七格都回 255,程式照樣跑。用「檢查有沒有接好」那張卡判斷;插回去就恢復。
  3. 先校準一次。按住感應器上的校準按鈕約 0.5 秒再放開,綠燈亮的 5 秒內把 16 個感應點在黑線和白底之間來回掃幾次;校準會記在感應器裡。MATRIXblock 不能送校準命令,一律用按鈕。
  4. 每路只有 4 級:MATRIX 的一格只放得下 8 個 bit,所以每路光值縮成 0 ~ 3(0 ~ 24 → 0、25 ~ 49 → 1、50 ~ 74 → 2、75 ~ 100 → 3)。第 2 路 = Cyan / 16 向下取整再除以 4 的餘數、第 3 路 = Cyan / 4 向下取整再除以 4 的餘數。
  5. MATRIXblock 讀不到的值:線段數、壓線位元圖等。要用請改 Arduino、mBlock 或 micro:bit。
  6. 丟線與方向:線完全離開時 Red 停在最後離開的那一側(減 16 後是 −16 或 +16);判斷「真的看不到線」用線寬 = 0。站在車後面往前看,線在左邊是負數;第 1 路在最左邊。