问题描述
我已经尝试了大约一周的时间,将Xbox 360控制器作为Arduino UNO中的第一个项目使用Xbox 360控制器来控制RC,尽管我遇到了一个问题,即我的USB屏蔽似乎无法连接到接收器否则无法识别,我使用了Xbox接收器库开发人员Kristian Lauszus的以下示例代码:
/*
Example sketch for the Xbox Wireless Reciver library - developed by Kristian Lauszus
It supports up to four controllers wirelessly
For more information see the blog post: http://blog.tkjelectronics.dk/2012/12/xbox-360-receiver-added-to-the-usb-host-library/ or
send me an e-mail: kristianl@tkjelectronics.com
*/
#include <XBOXRECV.h>
// Satisfy the IDE,which needs to see the include statment in the ino too.
#ifdef dobogusinclude
#include <spi4teensy3.h>
#endif
#include <SPI.h>
USB Usb;
XBOXRECV Xbox(&Usb);
void setup() {
Serial.begin(115200);
#if !defined(__MIPSEL__)
while (!Serial); // Wait for serial port to connect - used on Leonardo,Teensy and other boards with built-in USB CDC serial connection
#endif
if (Usb.Init() == -1) {
Serial.print(F("\r\nOSC did not start"));
while (1); //halt
}
Serial.print(F("\r\nXbox Wireless Receiver Library Started"));
}
void loop() {
Usb.Task();
if (Xbox.XboxReceiverConnected) {
for (uint8_t i = 0; i < 4; i++) {
if (Xbox.Xbox360Connected[i]) {
if (Xbox.getButtonPress(L2,i) || Xbox.getButtonPress(R2,i)) {
Serial.print("L2: ");
Serial.print(Xbox.getButtonPress(L2,i));
Serial.print("\tR2: ");
Serial.println(Xbox.getButtonPress(R2,i));
Xbox.setRumbleOn(Xbox.getButtonPress(L2,i),Xbox.getButtonPress(R2,i);
}
if (Xbox.getAnalogHat(LeftHatX,i) > 7500 || Xbox.getAnalogHat(LeftHatX,i) < -7500 || Xbox.getAnalogHat(LeftHatY,i) > 7500 || Xbox.getAnalogHat(LeftHatY,i) < -7500 || Xbox.getAnalogHat(RightHatX,i) > 7500 || Xbox.getAnalogHat(RightHatX,i) < -7500 || Xbox.getAnalogHat(RightHatY,i) > 7500 || Xbox.getAnalogHat(RightHatY,i) < -7500) {
if (Xbox.getAnalogHat(LeftHatX,i) < -7500) {
Serial.print(F("LeftHatX: "));
Serial.print(Xbox.getAnalogHat(LeftHatX,i));
Serial.print("\t");
}
if (Xbox.getAnalogHat(LeftHatY,i) < -7500) {
Serial.print(F("LeftHatY: "));
Serial.print(Xbox.getAnalogHat(LeftHatY,i));
Serial.print("\t");
}
if (Xbox.getAnalogHat(RightHatX,i) < -7500) {
Serial.print(F("RightHatX: "));
Serial.print(Xbox.getAnalogHat(RightHatX,i));
Serial.print("\t");
}
if (Xbox.getAnalogHat(RightHatY,i) < -7500) {
Serial.print(F("RightHatY: "));
Serial.print(Xbox.getAnalogHat(RightHatY,i));
}
Serial.println();
}
if (Xbox.getButtonClick(UP,i)) {
Xbox.setLedOn(LED1,i);
Serial.println(F("Up"));
}
if (Xbox.getButtonClick(DOWN,i)) {
Xbox.setLedOn(LED4,i);
Serial.println(F("Down"));
}
if (Xbox.getButtonClick(LEFT,i)) {
Xbox.setLedOn(LED3,i);
Serial.println(F("Left"));
}
if (Xbox.getButtonClick(RIGHT,i)) {
Xbox.setLedOn(LED2,i);
Serial.println(F("Right"));
}
if (Xbox.getButtonClick(START,i)) {
Xbox.setLedMode(ALTERNATING,i);
Serial.println(F("Start"));
}
if (Xbox.getButtonClick(BACK,i)) {
Xbox.setLedBlink(ALL,i);
Serial.println(F("Back"));
}
if (Xbox.getButtonClick(L3,i))
Serial.println(F("L3"));
if (Xbox.getButtonClick(R3,i))
Serial.println(F("R3"));
if (Xbox.getButtonClick(L1,i))
Serial.println(F("L1"));
if (Xbox.getButtonClick(R1,i))
Serial.println(F("R1"));
if (Xbox.getButtonClick(XBOX,i)) {
Xbox.setLedMode(ROTATING,i);
Serial.print(F("Xbox (Battery: "));
Serial.print(Xbox.getBatteryLevel(i)); // The battery level in the range 0-3
Serial.println(F(")"));
}
if (Xbox.getButtonClick(SYNC,i)) {
Serial.println(F("Sync"));
Xbox.disconnect(i);
}
if (Xbox.getButtonClick(A,i))
Serial.println(F("A"));
if (Xbox.getButtonClick(B,i))
Serial.println(F("B"));
if (Xbox.getButtonClick(X,i))
Serial.println(F("X"));
if (Xbox.getButtonClick(Y,i))
Serial.println(F("Y"));
}
}
}
}
基本上,当在循环的第一个IF语句中调用方法“ Xbox.XboxReceiverConnected”时,它会提供错误的布尔输出,指示接收器首先未连接。在过去的一周里,我一直在努力解决这个问题,没有任何运气,有什么建议吗?
更新,经过一番挖掘后,我运行了board_qc测试,结果如下:
Circuits At Home 2011
USB Host Shield Quality Control Routine
Reading REVISION register... Die revision 03
SPI long test. Transfers 1MB of data. Each dot is 64K................ SPI long test passed
GPIO test. Connect GPIN0 to GPOUT7,GPIN1 to GPOUT6,and so on
Test failed. Value written: 00 Value read: FF
Press any key to continue...
在按下所有键之后,什么也没有发生。有什么问题吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)