步驟1:焊接。..。
首先將USB電纜剝開這將是黑線,紅線,白線和綠線。還會有一些屏蔽層和屏蔽層接地線(通常不覆蓋),您可以減少使用。剝下四根導線中每根導線的大約1/8英寸的塑料。
接下來,您需要焊接二極管以串聯-》-》,然后焊接帶有線的一側以固定1和USB電纜中未與紅色導線相接的一側****在焊接之前,確保二極管繞線正確****
現在您可以將白色導線焊接至引腳2,綠色將導線連接到引腳3,將黑色導線連接到引腳4
也將一根導線也焊接到引腳5-7,請確保它們足夠長以連接到您的arduino
第2步:代碼
/*用于與xbox 360 RF模塊通信的Arduino代碼。
(yaywoop)的原始工作/亞歷山大·馬丁內斯(Alexander Martinez)的其他想法-由dilandou修改(www.dilandou .com,www.diru.org/wordpress)
首先發送LED初始化代碼,然后發送LED啟動動畫代碼,然后休眠直到按下按鈕以同步命令。
RF模塊必須由3.3V供電,兩個二極管與USB 5v串聯即可。將USB線連接到主機,將數據和串行線連接到Arduino。
當然,請確保具有公共接地*/
#include
#define sync_pin 2//電源按鈕改用于同步按鈕(模塊上的引腳5)
#define data_pin 3//數據線(模塊上的引腳6)
#define clock_pin 4//時鐘線(上的引腳7模塊)
int led_cmd [10] = {0,0,1,0,0,0,0,1,0,0};//激活/初始化LED,使中心LED點亮。
int anim_cmd [10] = {0,0,1,0,0,0,0,1,0,1};//在光環上制作啟動動畫。
int sync_cmd [10] = {0,0,0,0,0,0,0,1,0,0};//啟動同步過程。
volatile布爾型sync_enable = 0;
void sendData(int cmd_do []){
pinMode(data_pin,OUTPUT);
digitalWrite(data_pin,LOW);//開始發送數據。
int prev = 1;
for(int i = 0; i 《10; i ++){
while(prev == digitalRead(clock_pin)){}//檢測變化in clock
prev = digitalRead(clock_pin);
//應該在時鐘的下降沿之后,所以現在發送數據位
digitalWrite(data_pin,cmd_do [i]);
while(prev == digitalRead(clock_pin)){}//檢測時鐘的上升沿
prev = digitalRead(clock_pin);
}
digitalWrite(data_pin,HIGH);
pinMode(data_pin,INPUT);
}
void initLEDs(){ delay(50);
sendData(anim_cmd);
delay(50);
}
voidakeUp(){
sync_enable = 1;
}
void sleepNow(){
set_sleep_mode(SLEEP_MODE_PWR_DOWN);//設置睡眠模式
sleep_enable();//啟用睡眠位
attachInterrupt(0,akeup,LOW);
sleep_mode();
sleep_disable();//禁用睡眠位
detachInterrupt(0);//禁用引腳2上的中斷0
}
void setup(){
Serial.begin(9600);
pinMode(sync_pin,INPUT);
digitalWrite(sync_pin,HIGH);
pinMode(data_pin,INPUT);
pinMode(clock_pin,INPUT);
delay(2000);
initLEDs();
//sendData(sync_cmd);
}
void loop(){
Serial.println(“ Sleeping。”);
sleepNow();
delay(200);
if(sync_enable == 1){
串行.println(“ Syncing。”);
sendData(sync_cmd);
sync_enable = 0;
}
}
或者您可以從這里獲取它http://diru.org/wordpress/hacking/xbox-360-rf-module-arduino/
您將需要使用此代碼對arduino進行編程
我并未提出此代碼,因此該代碼的全部功勞歸于dilandou和Alex Martinez
第3步:軟件
下載此http://www.microsoft.com/hardware/zh-cn/d/xbox-360-wireless-controller-對于Windows
并在程序文件中的安裝文件夾(Microsoft Xbox 360 Acessories)中轉到
Xusb21.inf,這是該軟件的驅動程序文件您將對其進行修改,以便它可以識別您的硬件
使用文本編輯器或類似Notepad ++(推薦)的程序打開它(建議)
找到這些標頭[MSFT.NTx86.6.0],[MSFT.NTamd64.6.0], [MSFT.NTx86]和[MSFT.NTamd64]。
您將替換每行下的5行代碼
原始代碼如下所示:
%XUSB21DeviceName.Wired%= CC_Install,USB Vid_045E&Pid_028E
%XUSB21.DeviceName%= CC_Install,USB Vid_045E&Pid_0719
%XUSB21.DeviceName.Wired%= CC_Install,USB MS_COMP_XUSB10
%XUSB21.DeviceName%= CC_Install,USB MS_COMP_XUSB20 br》%XUSB21.DeviceName.Jump%= CC_Install,USB Vid_045E&Pid_028F
您要放置的位置看起來像這樣
%XUSB21.DeviceName.Wired%= CC_Install,USB Vid_045E&Pid_0291
%XUSB21。 DeviceName%= CC_Install,USB Vid_045E&Pid_0291
%XUSB21.DeviceName.Wired%= CC_Install,USB UNKNOWN
%XUSB21.DeviceName%= CC_Install,USB UNKNOWN
現在保存(確保另存為.inf文件,否則將無法正常工作)
現在將三根多余的電線連接起來n將RF模塊連接到arduino(如果尚未將usb電纜插入計算機),它應該會亮起,但控制器仍無法同步
更改Microsoft Xbox 360 Acessories文件夾,以使其不再是只讀的
現在打開在設備管理器中找到未識別的USB設備(帶有黃色三角形的USB設備)
右鍵單擊并選擇更新驅動程序,然后在“更新驅動程序軟件”窗口中選擇瀏覽我的計算機,然后讓我從設備驅動程序列表中進行選擇,然后選擇顯示全部然后有磁盤
最后導航到修改后的Xusb21.inf文件,然后選擇并安裝
在安裝驅動程序后,控制器應與RF模塊同步,只需按下電源按鈕即可,該按鈕已被重新用作同步按鈕并像同步到xbox一樣進行同步
現在,它應該可以在允許您使用游戲手柄的任何游戲上使用
第4步:解釋和積分
圖片是我在面包板上的項目基臺。..我正在計劃清理它,并可能將它放在一個很好的案例中,對我來說,這是一個非常有用的硬件(我喜歡xbox控制器以及PC上的bestheda游戲的大量mod,例如輻射3/新維加斯和skyrim/morriowind)
rf模塊的工作原理與任何其他USB設備一樣,只要您具有驅動程序且不必同步它,則arduino在此項目中的目的是初始化RF模塊并允許您同步控制器。修改后的Xusb21.inf文件允許正式適配器的驅動程序與RF模塊配合使用,否則該模塊被視為單一設備。可以通過用3.3伏穩壓器關掉兩個二極管并使之適應只使用AVR微控制器而不是整個arduino板來改善整個事情,并且將來當我有時間/金錢時可能會做出這些改進,但這現在可以正常工作了。
-
控制器
+關注
關注
112文章
16444瀏覽量
179035 -
適配器
+關注
關注
8文章
1970瀏覽量
68168 -
Xbox
+關注
關注
0文章
187瀏覽量
16949
發布評論請先 登錄
相關推薦
評論