如何解决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 举报,一经查实,本站将立刻删除。