步骤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文章
16396浏览量
178509 -
适配器
+关注
关注
8文章
1957浏览量
68088 -
Xbox
+关注
关注
0文章
186浏览量
16943
发布评论请先 登录
相关推荐
评论