掌控者 PS2 (PS2) × SPIKE × MBC 積木網站
這一頁只講 MBC SPIKE 積木網站:在 SPIKE Prime/Robot Inventor 上用它讀掌控者 PS2 (PS2)的安裝步驟、每個值怎麼讀、能用的命令與範例。要換產品、主機或軟體,用上方的切換列。
安裝與設定
你需要
- 感應器:掌控者 PS2 (PS2)(SPIKE 版)。
- 主機:SPIKE Prime 或 Robot Inventor。
- 電腦:用 Chrome 瀏覽器打開網站,不用安裝軟體。
- 主機韌體:要先換成 Pybricks 韌體(下面第 2 步,網站上就能燒)。
安裝軟體
- 打開 MBC SPIKE 積木網站(中文積木,不用安裝)。
- 換韌體:上方選單「SPIKE 主機 → 安裝/更新 Pybricks 韌體」,照畫面做,約 3 分鐘。網站燒的是 Pybricks v4.1.0。
- 之後想回到樂高官方 App,用 SPIKE App 就能換回樂高原廠韌體。
讓軟體認得感應器
不用裝函式庫:MBC 感應器的積木已經內建在網站裡,每個數值一顆中文積木。
- 打開範例檔:上方選單「檔案 → 開啟」(或按 Ctrl+O)→ 選下載的
.abp。 - 積木網站讀得到的資料比官方 App 多(不用自己拆數字),但標「只有 Pybricks 版」的範例 6 用的新模式,積木網站也讀不到。
接線
- 用連接線把感應器插在主機的 C 孔(A~F 任一孔都可以,積木裡選同一個孔)。
- 接頭卡榫朝上,輕輕推進去。
- 主機開機後,感應器上的燈會亮起來。
讓手把連上接收器
PS2 的 2.4G 手把和它的接收頭是原廠成對的,不用按任何配對鍵。
- 接收器接好、主機開機。
- 打開手把電源,手把會自己連上。
- 看接收器板子上的綠燈:亮著=還沒接到手把;熄掉=已經接到手把。
- 手把上的 ANALOG(或 MODE)燈要亮,搖桿才有數值。接收器一接上手把會自動切到這個模式;燈沒亮就按一下手把中間的 ANALOG 鍵。
危險
2.4GHz 是公共頻段,跟 Wi-Fi、微波爐共用。同一場地有 12 套以上同時使用時可能互相干擾,這種場合建議改用藍牙版(PS4/PS5)。
第一次測試
- 網站連上主機(主機要是 Pybricks 韌體)。
- 開啟本頁的範例 1 的
.abp,按執行。 - 數字跟著感應器前方的東西變化,就是接好了。
常見問題
- 網站連不上主機? 主機還是樂高原廠韌體:先做「安裝軟體」第 2 步換成 Pybricks 韌體。
- 換回官方 App 後連不上? 主機現在是 Pybricks 韌體:用 SPIKE App 換回樂高原廠韌體。
- 插上去沒反應? 依序檢查:連接線插緊 → 換孔 → 換線 → 換主機測試。
讀值
主機要先換成 Pybricks 韌體。MBC 積木網站的感應器積木讀的是感應器的模式 9(一次讀完全部數值)。
十六鍵 buttons16
| 範圍 | 意思 |
|---|---|
0~65535 bit |
16 個按鍵合成一個數(PSX 排列,1 = 按下):bit0 SELECT、1 L3、2 R3、3 START、4 上、5 右、6 下、7 左、8 L2、9 R2、10 L1、11 R1、12 ▲、13 ●、14 ✕、15 ■;未連線 = 0 |
在 MBC 積木網站加入這款感應器的積木,用「十六鍵」積木讀;積木在主機上執行的是下面這段 Pybricks 程式(模式 9):
from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port
dev = PUPDevice(Port.A) # 感應器插 A 孔
w = dev.read(9)[6]
buttons16 = w & 0xFFFF # 十六鍵(int16 轉回 0~65535;按住 ■ 時讀到負數)方向鍵 dpad
| 範圍 | 意思 |
|---|---|
0~15 bit |
上 1、右 2、下 4、左 8(同時按相加),0~15;未連線 = 0 |
在 MBC 積木網站加入這款感應器的積木,用「方向鍵」積木讀;積木在主機上執行的是下面這段 Pybricks 程式(模式 9):
from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port
dev = PUPDevice(Port.A) # 感應器插 A 孔
w = dev.read(9)[0]
dpad = w & 0x0F # 方向鍵(bit 0~3)形狀鍵 shape
| 範圍 | 意思 |
|---|---|
0~15 bit |
▲ 1、● 2、✕ 4、■ 8(同時按相加),0~15;未連線 = 0;0x22 的 R 高 4 bit |
在 MBC 積木網站加入這款感應器的積木,用「形狀鍵」積木讀;積木在主機上執行的是下面這段 Pybricks 程式(模式 9):
from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port
dev = PUPDevice(Port.A) # 感應器插 A 孔
w = dev.read(9)[0]
shape = (w >> 4) & 0x0F # 形狀鍵(bit 4~7)肩鍵 shoulder
| 範圍 | 意思 |
|---|---|
0~15 bit |
L2 1、R2 2、L1 4、R1 8(同時按相加),0~15;未連線 = 0 |
在 MBC 積木網站加入這款感應器的積木,用「肩鍵」積木讀;積木在主機上執行的是下面這段 Pybricks 程式(模式 9):
from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port
dev = PUPDevice(Port.A) # 感應器插 A 孔
w = dev.read(9)[1]
shoulder = w & 0x0F # 肩鍵(bit 0~3)功能鍵 func
| 範圍 | 意思 |
|---|---|
0~15 bit |
SELECT 1、L3 2、R3 4、START 8(同時按相加),0~15;未連線 = 0;0x22 的 G 高 4 bit |
在 MBC 積木網站加入這款感應器的積木,用「功能鍵」積木讀;積木在主機上執行的是下面這段 Pybricks 程式(模式 9):
from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port
dev = PUPDevice(Port.A) # 感應器插 A 孔
w = dev.read(9)[1]
func = (w >> 4) & 0x0F # 功能鍵(bit 4~7)搖桿 LX/LY/RX/RY stick
| 範圍 | 意思 |
|---|---|
1~9(5 = 中間) |
SPIKE 讀到的是換算值 1 |
在 MBC 積木網站加入這款感應器的積木,用「搖桿 LX/LY/RX/RY」積木讀;積木在主機上執行的是下面這段 Pybricks 程式(模式 9):
from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port
dev = PUPDevice(Port.A) # 感應器插 A 孔
stick = list(dev.read(9)[2:6]) # [LX, LY, RX, RY]這個軟體讀不到:已連線、電量、L2 類比、R2 類比、系統鍵、手把類型。要用這些值請改用 Pybricks。
命令
SPIKE 接頭是唯讀的,這個軟體不能送命令:校準用感應器上的按鈕,切黑白線、門檻等設定改用 Arduino I2C、mBlock 或 micro:bit。
範例
範例 1:按鍵測試
這個範例會做什麼:主機螢幕一直顯示「按鍵的數字」。按不同的鍵,數字就不一樣,可以用來確認每一個鍵都正常。
要準備什麼
- SPIKE 主機 1 台
- 掌控者 PS2 接收器+2.4G 手把(已連上,見上面)
怎麼接:接收器插 C 孔。
下載程式
| MBC 積木網站 |
|---|
| ex01_button_number.abp |
🟦 MBC 積木網站的積木

一步一步看懂程式
- 一直重複:下面的積木會一直做,直到你按停止。
- 讀按鍵:官方 App 用「反射光」,讀到方向鍵和圖形鍵;MBC 積木網站和 Pybricks 用「全部按鍵」,16 個鍵都讀得到。
- 顯示在螢幕上:數字會在螢幕上捲過去(按住按鍵,等它捲完)。
- 等 0.1 秒再讀下一次。
跑起來應該看到什麼
| 按住 | 三種寫法都顯示 | MBC 積木網站、Pybricks 才有 |
|---|---|---|
| 沒按 | 0 | |
| 上 | 1 | |
| 右/下/左 | 2/4/8 | |
| ▲/●/✕/■ | 16/32/64/128 | |
| 上+▲ 一起按 | 17(1+16,同時按就相加) | |
| L2/R2/L1/R1 | 官方 App 還是 0(肩鍵要用「顏色」積木,範例 3 會用到) | 256/512/1024/2048 |
| SELECT/L3/R3/START | 官方 App 還是 0 | 4096/8192/16384/32768 |
常見問題
- 一直是 0,按什麼都沒反應? → 手把還沒連上:看接收器的綠燈是不是還亮著,打開手把電源或換電池。
- 主機說找不到感應器、或數字怪怪的? → 接收器可能是 EV3 版韌體,要用 SPIKE 版。
範例 2:搖桿數值
這個範例會做什麼:主機螢幕顯示左搖桿上下的位置(1 ~ 9)。放開是 5,往上推變大、往下拉變小。
要準備什麼:同範例 1。
怎麼接:接收器插 C 孔。
下載程式
| MBC 積木網站 |
|---|
| ex02_stick_value.abp |
🟦 MBC 積木網站的積木

一步一步看懂程式
- 讀左搖桿上下:
- 官方 App:「原始紅色」讀到的是 X×10+Y(例如 59=左右在中間 5、往上推到底 9),所以用「除以 10 的餘數」把 Y 拿出來(59 → 9)。
- MBC 積木網站:直接選「左搖桿 Y(1~9)」。
- Pybricks:
pad.stick('LY')。
- 顯示在螢幕上。MBC 積木網站和 Pybricks 也會在電腦畫面印出數字(Pybricks 4 個方向都印)。
- 等 0.1 秒再讀下一次。
跑起來應該看到什麼
- 放開搖桿:5。
- 慢慢往上推:6、7、8、9。
- 慢慢往下拉:4、3、2、1。
常見問題
- 一直是 5,推了也不會變? → 手把在「數位模式」:按一下手把的 ANALOG 鍵,讓 ANALOG 燈亮起來。
- 還沒開手把就顯示 1? → 比較舊的接收器韌體在還沒接到手把時,搖桿會讀到 1(等於拉到最下面)。打開手把就會回到 5。範例 5 有加保護,不會因為這樣一開機就倒車。
- 想看右搖桿或左右方向? → MBC 積木網站:把下拉選單換成「右搖桿 Y」或「左搖桿 X」;官方 App:右搖桿用「原始綠色」,左右方向用「除以 10 取整數」;Pybricks:把
'LY'換成'RY'、'LX'、'RX'。
範例 3:按鍵控制燈和聲音
這個範例會做什麼:按 ▲ 主機燈變綠色、按 ● 變紅色、按 ✕ 變藍色、按 ■ 變粉紅色(跟手把上的顏色一樣),都沒按就關燈。按 L1 嗶一聲低音、按 R1 嗶一聲高音。
要準備什麼:同範例 1。
怎麼接:接收器插 C 孔。
下載程式
| MBC 積木網站 |
|---|
| ex03_light_sound.abp |
🟦 MBC 積木網站的積木

一步一步看懂程式
- 先把按鍵讀進「變數」(變數=有名字的盒子,可以放一個數字):官方 App 用兩個盒子,「按鍵」放反射光(方向鍵+圖形鍵)、「肩鍵」放顏色(L1、R1…)。MBC 積木網站和 Pybricks 不用自己存,直接問「某個鍵有沒有被按下」。
- 如果 ▲ 有按 → 綠燈。
- 否則,如果 ● 有按 → 紅燈;否則如果 ✕ → 藍燈;否則如果 ■ → 粉紅燈。
- 都不是 → 關燈。
- 另外兩個「如果」:L1 有按 → 嗶低音(官方 App 音符 60、另外兩種 262 Hz,都是「Do」);R1 有按 → 嗶高音(音符 72/523 Hz,高八度的 Do)。
- 官方 App 判斷「▲ 有按」的寫法:(按鍵 ÷ 16) 取整數,除以 2 的餘數 = 1。● 換成 32、✕ 換成 64、■ 換成 128;L1 是 (肩鍵 ÷ 4)、R1 是 (肩鍵 ÷ 8)。
跑起來應該看到什麼
- 按住 ▲:綠燈;放開:燈熄。
- 同時按 ▲ 和 ●:綠燈(上面的「如果」先成立就不看下面的)。
- 按住 L1:一直嗶嗶嗶低音。
常見問題
- 官方 App 按 L1、R1 沒聲音? → 肩鍵是用「顏色」積木讀的(本頁依韌體和官方範例整理,尚未逐一上機確認)。先跑範例 1 確認方向鍵、圖形鍵正常;再把範例 1 的「反射光」換成「顏色」,按 L1 應該顯示 4、R1 顯示 8。
- 燈的顏色怎麼換? → 官方 App:點「set Power Button light to」積木上的顏色圓點;MBC 積木網站:點「主機燈號設為」的下拉選單;Pybricks:把
Color.GREEN換成Color.YELLOW之類。
範例 4:方向鍵開車
這個範例會做什麼:按住方向鍵,車子就往那個方向走;放開就停。上=前進、下=後退、左=原地左轉、右=原地右轉。
要準備什麼
- 範例 1 的東西,再加上
- 兩輪小車(兩顆馬達當輪子)
怎麼接
- 接收器插 C 孔
- 左輪接 E、右輪接 F
下載程式
| MBC 積木網站 |
|---|
| ex04_dpad_drive.abp |
🟦 MBC 積木網站的積木

一步一步看懂程式
- 告訴主機輪子怎麼裝:左右兩顆馬達是面對面裝的,所以左輪要「反過來轉」才會往前。
- MBC 積木網站:「E 接 樂高 馬達 馬達正轉 逆時針」(F 是順時針);Pybricks:
Direction.COUNTERCLOCKWISE。這樣設好之後,兩輪都給正的數字就是往前。 - 官方 App 的馬達積木沒有這個設定,所以左輪 E 的數字要加負號:往前是 E -50、F 50。
- MBC 積木網站:「E 接 樂高 馬達 馬達正轉 逆時針」(F 是順時針);Pybricks:
- 一直重複:讀按鍵。
- 如果 上 有按 → 兩輪都往前(功率 50%)。
- 否則如果 下 → 兩輪都往後。
- 否則如果 左 → 左輪往後、右輪往前 → 原地左轉(功率 30%,轉慢一點比較好控制)。
- 否則如果 右 → 原地右轉。
- 都沒按 → 兩輪功率 0,停下來。
| 按住 | MBC 積木網站、Pybricks(E, F) |
|---|---|
| 上 | 50, 50 |
| 下 | -50, -50 |
| 左 | -30, 30 |
| 右 | 30, -30 |
| 沒按 | 0, 0 |
跑起來應該看到什麼:按住上,車子往前走;放開,車子停。
常見問題
- 按上卻往後退? → 馬達的裝法跟樂高標準小車相反:MBC 積木網站把 E、F 的「正轉」方向對調;Pybricks 左輪改成
Direction.CLOCKWISE、右輪改成Motor(Port.F, Direction.COUNTERCLOCKWISE);官方 App 把所有數字的正負號都對調。 - 按上卻原地打轉? → 只有一邊的方向反了:只改那一顆馬達的正負號(或正轉方向)。
- 手把關掉或沒電了,車子還在走? → 先按主機中間的按鈕停止程式,再檢查手把電池。
範例 5:雙搖桿坦克開車
這個範例會做什麼:像開坦克一樣:左搖桿管左輪、右搖桿管右輪。兩支都往前推=前進、都往後拉=後退、一前一後=原地轉彎。推越多跑越快,放開就停。
要準備什麼:同範例 4。
怎麼接:接收器插 C 孔;左輪接 E、右輪接 F。
下載程式
| MBC 積木網站 |
|---|
| ex05_tank_drive.abp |
🟦 MBC 積木網站的積木

一步一步看懂程式
- 開始前的保護:先「等到」兩支搖桿都在中間(4 ~ 6)才開始,然後亮綠燈。這樣手把還沒連上、或一開機搖桿被碰到時,車子不會突然衝出去。
- 一直重複:讀左搖桿上下(Y)和右搖桿上下(Y)。官方 App 是「原始紅色」和「原始綠色」除以 10 的餘數。
- 死區:搖桿在 4 ~ 6 就把功率設成 0。手放開時搖桿不一定剛好回到 5,有了死區車子才會乖乖停住。
- 否則:功率=**(搖桿 − 5) × 25**。推到 7 是 50%、推到底 9 是 100%;拉到 3 是 -50%、拉到底 1 是 -100%。
- 把功率給馬達:左輪 E 用左搖桿的功率、右輪 F 用右搖桿的功率。官方 App 的左輪要 × -1(原因同範例 4)。
跑起來應該看到什麼
- 程式一開始:放開搖桿就亮綠燈,車子不動。
- 兩支搖桿一起往前推:前進,推越多越快。
- 左搖桿往前、右搖桿往後:原地右轉。
- 放開:停車。
常見問題
- 按了執行,一直沒亮綠燈? → 搖桿沒在中間,或手把還沒連上(比較舊的接收器韌體在還沒接到手把時搖桿會讀到 1)。放開搖桿、打開手把電源,就會亮綠燈開始。
- 推一點點車子不會動? → 這是死區,推到 7 以上(或拉到 3 以下)才會動。想要更靈敏,可以把「4 ~ 6」改成「5 ~ 5」,但放開時車子可能會慢慢滑。
- 太快不好控制? → 把「× 25」改成「× 15」(推到底變 60%)。
- 前後顛倒或原地打轉? → 同範例 4 的常見問題。
注意
下面這些範例沒有這個軟體的版本:範例 6(進階):連線狀態與電量
其他問題
- 主機認不到感應器? 拔掉重插一次,等 2 秒;換一個孔試試。官方 App 會把它顯示成「顏色感應器」,這是正常的。
- 可以同時用官方 App 和 Pybricks 嗎? 一次只能裝一種韌體:Pybricks 與 MBC 積木網站用 Pybricks 韌體,官方 App 用樂高原廠韌體;隨時可以用 SPIKE App 換回原廠韌體。
還有問題?到 聯絡我們 附上你用的軟體和程式截圖。
下載
本頁依據
- 主機與軟體清單:
_build/guides.json - 值與命令:
_build/protocol/ps2.json(單一真相來源) - 安裝與設定:
_build/guides/software/spike-mbcblocks.zh.md、_build/guides/product/ps2/spike-mbcblocks.zh.md - 範例:
sensors/ps2/spike-examples.md