arduino USB主机屏蔽无法连接到xbox 360接收器/ GPIO测试失败

问题描述

我已经尝试了大约一周的时间,将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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...