MBC 陀螺儀 IMU × MATRIX Mini R4(MATRIXblock)

三個步驟用 MATRIXblock 讀陀螺儀 IMU

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

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

1

初始化:陀螺儀 IMU接哪個孔

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

感應器接在哪個孔?
  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。每一格放的是陀螺儀的一個值,下面每張卡告訴你那一格是什麼、怎麼換算。孔要選跟第 1 步一樣的(I2C1)。點一個功能,積木和輸出會換成它的範例;範例放在「循環」裡、等待的上面。

模擬感應器:左邊從上面看(航向),右邊從側面看(俯仰)。拖動拉桿、按按鈕,看右邊的輸出怎麼變

模擬畫面是示意:數值用畫面上車子的方向換算,不是感應器裡面的演算法。MATRIX 只讀得到三個航向(俯仰拉桿在這裡不會改變讀值;搖晃會讓航向左右晃幾度)。程式一開始的「顏色感應器初始化」會讓航向歸零,所以每換一個範例(等於重新上傳程式)模擬器就先歸零一次。

每個讀值的範例

6 個範例,每個都可以照著拼(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 另一款感應器用的,讀不到陀螺儀 IMU)。
  2. 拔線不會停程式:MATRIX 函式庫讀不到感應器時,七格都回 255,程式照樣跑。用「檢查有沒有接好」那張卡判斷;插回去就恢復。
  3. 一個航向用兩格:Red/Green = 陀螺 3D 航向、Blue/Cyan = 融合航向、Magenta/Yellow = 陀螺 1D 航向,前一格是低位元組、後一格是高位元組,算法都是「高 × 256 + 低 − 32768」。只讀一格(例如只讀 Red)會在 0 ~ 255 之間繞圈,看不出轉了幾度。
  4. 歸零:程式開頭的「顏色感應器初始化」會讓三個航向歸零(開機那一下車子要靜止);程式中途要歸零就讀一次 Key。右轉航向變大、左轉變小,轉一圈 = 360,會一直累加。
  5. 兩格是分兩次讀的:車子正在轉、低位元組剛好從 255 跳到 0 的那一瞬間,算出來的航向可能差 256 度一下下,下一次就正常。要拿航向做判斷(例如停車),可以多看一次確認。
  6. MATRIXblock 讀不到的值:磁力航向、角速度、俯仰角、加速度、磁力原始值、校準命令。要用這些請改 Arduino、mBlock 或 micro:bit。