黃信惠

2021年5月13日2 分鐘

使用Arduino當作Xbox搖桿

Arduino可以直接用來當作Xbox的控制器,而且電腦端不需要額外安裝軟體!

讓你的遊戲搖桿自動控制、按下按鈕,或是你可以自行製作特殊的外部裝置、塞車控制器,或是自動連發、巨集按鈕、自動練功打怪的外掛搖桿。

只要使用Xinput這個Library可以讓Arduino模擬Xbox搖桿,在這篇文章會教大家如何自己設定與製作。

不過這個功能僅限於Arduino Leonardo 等32u4晶片的開發板,常見的UNO是沒辦法支援的喔。

支援的開發板: Leonardo, Esplora, Zero, Due , MKR 系列

安裝XInput開發板

  • 將下載後的檔案解壓縮,放在 C:\Program Files (x86)\Arduino\hardware\xinput\avr
     
    其中 xinput\avr 這兩個資料夾請自己建立

  • 重新啟動Arduino軟體,在開發板這邊看到Xinput AVR Boards就代表安裝完成

安裝Library

  • 這個Library有收錄在Arduino內的程式庫管理員,打開Arduino的 草稿碼>匯入程式庫>管理程式庫,就可以打開程式庫管理員

  • 在上方直接搜尋xinput,接著點選安裝,Library就安裝完成了

測試

  • 接著可以先上傳範例檔案測試看看,選擇 檔案>範例>Xinput>Blink,這個程式碼可以讓搖桿每隔一秒按一次A鍵

  • 上傳之前,請先選擇開發板,選擇XInput裡面的板子,我用的是Leonardo開發板,所以選擇Arduino Leonardo w/XInput,就可以上傳了

  • 上傳成功後,理論上就可以在電腦的「藍牙與其他裝置」看到Xbox 360的手把了

注意!

上傳完成後,電腦會判斷Arduino開發板為Xbox手把,如果再次上傳程式碼就會出錯,因為電腦會找不到Arduino開發板。

這時候不用擔心,請在上傳的時候,顯示「上傳中…」的字樣時,立刻按下Arduino上的Reset按鈕,這樣就可以成功上傳了。

(原廠的Arduino板按一次可以Reset,副廠的需要連按兩下)

測試手把的網站

  • 上傳玩程式碼之後,要確認手把是不是能正常運作,但總不可能每次都開著遊戲測試吧,這個方便的網站可以讓你測試每個按鈕,甚至類比搖桿的座標,在進行遊戲之前請先到此網站,確認你的裝置能否正常運作吧。
     
    https://gamepad-tester.com/

重要程式碼說明

  • 接下來就發揮創意,自行開發自己的搖桿吧,這個網頁裡面有各種Xbox按鍵的程式碼介紹與範例,從ABXY鍵的範例,類比搖桿、板機鍵的輸入範圍,甚至還有震動馬達以及手把上的LED燈,都可以透過程式碼讀取。 https://www.partsnotincluded.com/how-to-emulate-an-xbox-controller-with-arduino-xinput/
     
    https://www.partsnotincluded.com/how-to-emulate-an-xbox-controller-with-arduino-xinput/

範例應用

    3866
    6