MBC 掌控者 PS2/PS4 × MATRIX Mini R4(MATRIXblock)

三個步驟用 MATRIXblock 讀掌控者 PS2/PS4

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

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

1

初始化:掌控者 PS2/PS4接哪個孔

程式的第一件事,是在藍色「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)。點一個功能,積木和輸出會換成它的範例;範例放在「循環」裡、等待的上面。

模擬手把:點按鍵、拖動搖桿,看右邊的輸出怎麼變

模擬畫面是示意:點一下按鍵=按住,再點一下放開;拖動搖桿的圓點改變位置(放開滑鼠會停在那裡,按「全部放開」回到中間)。搖桿 0 ~ 99、50 = 中間,往右、往上數字變大。PS2、PS4 接收器在 MATRIX 讀到的七格一模一樣。

每個讀值的範例

14 個範例,每個都可以照著拼(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 另一款感應器用的,讀不到掌控者 PS2/PS4)。
  2. 拔線不會停程式:MATRIX 函式庫讀不到感應器時,七格都回 255,程式照樣跑。用「檢查有沒有接好」那張卡判斷;插回去就恢復。
  3. PS2、PS4 讀法一樣:兩種接收器七格的意思完全相同。PS4 才有的震動、燈條、電量,MATRIXblock 讀不到也送不出去;要用請改 Arduino、mBlock 或 micro:bit。
  4. 先讓手把連上:PS2 打開手把電源就會自己連上(接收器綠燈熄掉 = 已連上,手把 ANALOG 燈要亮)。PS4/PS5 第一次要配對:接收器綠燈快閃時,PS4 長按 SHARE+PS、PS5 長按 建立+PS。
  5. 同時按很多鍵:數字會相加,所以判斷某一顆鍵要用「/」、「向下取整」和「除以 2 的餘數」把它拆出來(看「按著 ▲ 嗎」那張卡)。