MBC 掌控者 PS2/PS4 × EV3 clev3r

三個步驟用 clev3r 讀掌控者遙控接收器

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 螢幕只能顯示英文和數字,所以標籤用英文縮寫。點一個讀值,程式和螢幕會換成它的範例。

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

模擬畫面是示意:點一下按鍵=按住,再點一下放開;拖動搖桿的圓點改變位置(放開滑鼠會停在那裡,按「全部放開」回到中間)。搖桿 1 ~ 9、5 = 中間,往右、往上數字變大。PS4 手把的電量固定示意為 80。

每個讀值的範例

完整範例


        

!


        

!


        

!

使用注意

  1. 一個程式只用一種模式。開車和按鍵都用模式 1:[方向鍵, LX, 形狀鍵, LY, 肩鍵, RX, 功能鍵, RY] 一次都拿得到。EV3 每換一次模式要等約 1.1 秒。
  2. 拔線時讀到 0。clev3r 的 Sensor.ReadRawValue 拿不到資料時回傳 0,程式不會停。注意:搖桿 0 是「推到底」,拔線時車子可能會衝,所以開車程式最好先用 Sensor.GetType 確認接收器還在。在右邊勾「拔掉感應器」試試看。
  3. 按鍵的數字會相加。方向鍵:上 1、右 2、下 4、左 8;形狀鍵:△ 1、○ 2、✕ 4、□ 8;肩鍵:L2 1、R2 2、L1 4、R1 8;功能鍵:SELECT 1、L3 2、R3 4、START 8。要看某一個鍵,用「✕ 鍵有沒有按」那張卡的算法。
  4. 搖桿 0 ~ 99,50 = 中間。往右、往上變大。推一點點會跳動,把 40 ~ 60 當成「沒推」。手把沒連上時按鍵全是 0、搖桿是 50;模式 3 的狀態值大於等於 256 才是已連上。
  5. clev3r 讀不到、做不到的:手把電量、PS4 震動和燈條(EV3 的感應器孔只能讀不能送)。EV3 螢幕只能顯示英文和數字,所以 LCD.Text 的標籤用英文縮寫。