Pages: [1] 2   Go Down
Author Topic: USB Host Shield  (Read 2156 times)
0 Members and 1 Guest are viewing this topic.
TV
Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve,
Ho comprato da poco un Usb Host Shield della Sparkfun, e sono intento a farlo funzionare su un Arduino uno.
Dopo essermi informato su internet, ed aver scricato da github le varie librerie, o proceduto er tentativi a far funzionre il tutto, ma purtroppo sono fermo alla fase di compilazione dello sketch.
Lo sketch e questo:
Code:
/*
Example sketch for the Xbox 360 USB library - developed by Kristian Lauszus
For more information visit my blog: http://blog.tkjelectronics.dk/ or
send me an e-mail: kristianl@tkjelectronics.com
*/

#include <XBOXUSB.h>
#include <Usb.h>
#include <avrpins.h>
#include <max3421e.h>
#include <usbhost.h>
#include <usb_ch9.h>
#include <address.h>
#include <printhex.h>
#include <hexdump.h>
#include <message.h>
USB Usb;
XBOXUSB Xbox(&Usb);

void setup() {
  Serial.begin(115200);

  if (Usb.Init() == -1) {
    Serial.print(F("\r\nOSC did not start"));
    while(1); //halt
  }
  Serial.print(F("\r\nXBOX USB Library Started"));
}
void loop() {
  Usb.Task();
  if(Xbox.Xbox360Connected) {
    Xbox.setRumbleOn(Xbox.getButton(L2),Xbox.getButton(R2));
    if(Xbox.getAnalogHat(LeftHatX) > 7500 || Xbox.getAnalogHat(LeftHatX) < -7500 || Xbox.getAnalogHat(LeftHatY) > 7500 || Xbox.getAnalogHat(LeftHatY) < -7500 || Xbox.getAnalogHat(RightHatX) > 7500 || Xbox.getAnalogHat(RightHatX) < -7500 || Xbox.getAnalogHat(RightHatY) > 7500 || Xbox.getAnalogHat(RightHatY) < -7500) {
      if(Xbox.getAnalogHat(LeftHatX) > 7500 || Xbox.getAnalogHat(LeftHatX) < -7500) {
        Serial.print(F("LeftHatX: "));
        Serial.print(Xbox.getAnalogHat(LeftHatX));
        Serial.print("\t");
      }
      if(Xbox.getAnalogHat(LeftHatY) > 7500 || Xbox.getAnalogHat(LeftHatY) < -7500) {
        Serial.print(F("LeftHatY: "));
        Serial.print(Xbox.getAnalogHat(LeftHatY));
        Serial.print("\t");
      }
      if(Xbox.getAnalogHat(RightHatX) > 7500 || Xbox.getAnalogHat(RightHatX) < -7500) {
        Serial.print(F("RightHatX: "));
        Serial.print(Xbox.getAnalogHat(RightHatX));
        Serial.print("\t");
      }
      if(Xbox.getAnalogHat(RightHatY) > 7500 || Xbox.getAnalogHat(RightHatY) < -7500) {
        Serial.print(F("RightHatY: "));
        Serial.print(Xbox.getAnalogHat(RightHatY));
      }
      Serial.println("");
    }

    if(Xbox.buttonPressed) {
      Serial.print(F("Xbox 360 Controller"));
      if(Xbox.getButton(UP)) {
        Xbox.setLedOn(LED1);
        Serial.print(F(" - UP"));
      }
      if(Xbox.getButton(DOWN)) {
        Xbox.setLedOn(LED4);
        Serial.print(F(" - DOWN"));
      }
      if(Xbox.getButton(LEFT)) {
        Xbox.setLedOn(LED3);
        Serial.print(F(" - LEFT"));
      }
      if(Xbox.getButton(RIGHT)) {
        Xbox.setLedOn(LED2);
        Serial.print(F(" - RIGHT"));
      }

      if(Xbox.getButton(START)) {
        Xbox.setLedMode(ALTERNATING);
        Serial.print(F(" - START"));
      }
      if(Xbox.getButton(BACK)) {
        Xbox.setLedBlink(ALL);
        Serial.print(F(" - BACK"));
      }
      if(Xbox.getButton(L3))
        Serial.print(F(" - L3"));
      if(Xbox.getButton(R3))
        Serial.print(F(" - R3"));

      if(Xbox.getButton(L1))
        Serial.print(F(" - L1"));
      if(Xbox.getButton(R1))
        Serial.print(F(" - R1"));
      if(Xbox.getButton(XBOX)) {
        Xbox.setLedMode(ROTATING);
        Serial.print(F(" - XBOX"));
      }

      if(Xbox.getButton(A))
        Serial.print(F(" - A"));
      if(Xbox.getButton(B))
        Serial.print(F(" - B"));
      if(Xbox.getButton(X))
        Serial.print(F(" - X"));
      if(Xbox.getButton(Y))
        Serial.print(F(" - Y"));

      if(Xbox.getButton(L2)) {
        Serial.print(F(" - L2:"));
        Serial.print(Xbox.getButton(L2));
      }
      if(Xbox.getButton(R2)) {
        Serial.print(F(" - R2:"));
        Serial.print(Xbox.getButton(R2));
      }
      Serial.println();
    }
  }
  delay(1);
}

e questo e quello che mi da come errore dopo la compilazione:
Code:
In file included from C:\Archivio\arduino-1.0.1\libraries\Usb/Usb.h:43,
                 from C:\Archivio\arduino-1.0.1\libraries\XBOXUSB/XBOXUSB.h:24,
                 from XBOXUSB.cpp:7:
C:\Archivio\arduino-1.0.1\libraries\printhex/printhex.h:15: error: stray '@' in program
In file included from C:\Archivio\arduino-1.0.1\libraries\hexdump/hexdump.h:22,
                 from C:\Archivio\arduino-1.0.1\libraries\Usb/Usb.h:44,
                 from C:\Archivio\arduino-1.0.1\libraries\XBOXUSB/XBOXUSB.h:24,
                 from XBOXUSB.cpp:7:
C:\Archivio\arduino-1.0.1\libraries\printhex/printhex.h:15: error: stray '@' in program
In file included from C:\Archivio\arduino-1.0.1\libraries\message/message.h:22,
                 from C:\Archivio\arduino-1.0.1\libraries\Usb/Usb.h:45,
                 from C:\Archivio\arduino-1.0.1\libraries\XBOXUSB/XBOXUSB.h:24,
                 from XBOXUSB.cpp:7:
C:\Archivio\arduino-1.0.1\libraries\printhex/printhex.h:15: error: stray '@' in program
In file included from XBOXUSB.cpp:14:
C:\Archivio\arduino-1.0.1\libraries\printhex/printhex.h:15: error: stray '@' in program
In file included from C:\Archivio\arduino-1.0.1\libraries\Usb/Usb.h:43,
                 from C:\Archivio\arduino-1.0.1\libraries\XBOXUSB/XBOXUSB.h:24,
                 from XBOXUSB.cpp:7:
C:\Archivio\arduino-1.0.1\libraries\printhex/printhex.h:1: error: expected constructor, destructor, or type conversion before '(' token

Chiedo aiuto per capire cosa sbaglio, o cosa mi manca per il corretto funzionamento.
Grazie,
Brusertv
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E' disponibile una nuova libreria per l'USB Host Shield --> https://github.com/felis/USB_Host_Shield_2.0
C'è anche la versione dell'IDE aggiornata: 1.0.3 --> http://arduino.cc/en/Main/Software
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

BZ (I)
Online Online
Brattain Member
*****
Karma: 263
Posts: 21601
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hai scaricato e installate tutte le librerie incluse nello sketch?
Ciao Uwe
Logged

TV
Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve,
le librerie le ho scaricate tutte dal primo link indicato da PaoloP, l'ide mia e una 1.0.1, fa tanta differenza per quello che devo fare?
In secondo luogo le librerie indicate sullo scketch le ho scaricate tutte, il fatto e' che all'inizio lo sketch prevedeva solo "#include <XBOXUSB.h>", ho aggiunto io le altre via via che me le indicava nella finestra dell'ide come errore dopo la compilazione.
Grazie,
Brusertv
Logged

TV
Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve,
nessuno ha un suggerimento?
Grazie,
Brusertv
Logged

TV
Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve,
io non mi sono ancora arreso, ma lo sto pensando.
Nessuno che abbia avuto esperienza con Usb host shield della sparkfun?
Nessuno che possa ( o abbia voglia...) darmi una mano a capire dove sbaglio?
Grazie,
Brusertv
Logged

TV
Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve,
Ho ricontrollato quello che avevo fatto, e questo e' il risultato.
Questo e' il programma che ho scaricato e che voglio far funzionare per provare USB Host Shield:

Code:
/*
 Example sketch for the Xbox 360 USB library - developed by Kristian Lauszus
 For more information visit my blog: http://blog.tkjelectronics.dk/ or
 send me an e-mail:  kristianl@tkjelectronics.com
 */

#include <XBOXUSB.h>
USB Usb;
XBOXUSB Xbox(&Usb);

void setup() {
  Serial.begin(115200);

  if (Usb.Init() == -1) {
    Serial.print(F("\r\nOSC did not start"));
    while(1); //halt
  } 
  Serial.print(F("\r\nXBOX USB Library Started"));
}
void loop() {
  Usb.Task();
  if(Xbox.Xbox360Connected) {
    Xbox.setRumbleOn(Xbox.getButton(L2),Xbox.getButton(R2));
    if(Xbox.getAnalogHat(LeftHatX) > 7500 || Xbox.getAnalogHat(LeftHatX) < -7500 || Xbox.getAnalogHat(LeftHatY) > 7500 || Xbox.getAnalogHat(LeftHatY) < -7500 || Xbox.getAnalogHat(RightHatX) > 7500 || Xbox.getAnalogHat(RightHatX) < -7500 || Xbox.getAnalogHat(RightHatY) > 7500 || Xbox.getAnalogHat(RightHatY) < -7500) {
      if(Xbox.getAnalogHat(LeftHatX) > 7500 || Xbox.getAnalogHat(LeftHatX) < -7500) {
        Serial.print(F("LeftHatX: "));
        Serial.print(Xbox.getAnalogHat(LeftHatX));
        Serial.print("\t");
      }
      if(Xbox.getAnalogHat(LeftHatY) > 7500 || Xbox.getAnalogHat(LeftHatY) < -7500) {
        Serial.print(F("LeftHatY: "));
        Serial.print(Xbox.getAnalogHat(LeftHatY));
        Serial.print("\t");
      }
      if(Xbox.getAnalogHat(RightHatX) > 7500 || Xbox.getAnalogHat(RightHatX) < -7500) {
        Serial.print(F("RightHatX: "));
        Serial.print(Xbox.getAnalogHat(RightHatX));
        Serial.print("\t");     
      }
      if(Xbox.getAnalogHat(RightHatY) > 7500 || Xbox.getAnalogHat(RightHatY) < -7500) {
        Serial.print(F("RightHatY: "));
        Serial.print(Xbox.getAnalogHat(RightHatY)); 
      }
      Serial.println("");
    }

    if(Xbox.buttonPressed) {
      Serial.print(F("Xbox 360 Controller"));
      if(Xbox.getButton(UP)) {
        Xbox.setLedOn(LED1);
        Serial.print(F(" - UP"));
      }     
      if(Xbox.getButton(DOWN)) {
        Xbox.setLedOn(LED4);
        Serial.print(F(" - DOWN"));
      }
      if(Xbox.getButton(LEFT)) {
        Xbox.setLedOn(LED3);
        Serial.print(F(" - LEFT"));
      }
      if(Xbox.getButton(RIGHT)) {
        Xbox.setLedOn(LED2);
        Serial.print(F(" - RIGHT"));
      }

      if(Xbox.getButton(START)) {
        Xbox.setLedMode(ALTERNATING);
        Serial.print(F(" - START"));
      }
      if(Xbox.getButton(BACK)) {
        Xbox.setLedBlink(ALL);
        Serial.print(F(" - BACK"));
      }
      if(Xbox.getButton(L3))
        Serial.print(F(" - L3"));
      if(Xbox.getButton(R3))
        Serial.print(F(" - R3"));

      if(Xbox.getButton(L1))
        Serial.print(F(" - L1"));
      if(Xbox.getButton(R1))
        Serial.print(F(" - R1"));
      if(Xbox.getButton(XBOX)) {
        Xbox.setLedMode(ROTATING);
        Serial.print(F(" - XBOX"));       
      }

      if(Xbox.getButton(A))
        Serial.print(F(" - A"));
      if(Xbox.getButton(B))
        Serial.print(F(" - B"));
      if(Xbox.getButton(X))
        Serial.print(F(" - X"));
      if(Xbox.getButton(Y))
        Serial.print(F(" - Y"));

      if(Xbox.getButton(L2)) {
        Serial.print(F(" - L2:"));
        Serial.print(Xbox.getButton(L2));
      }
      if(Xbox.getButton(R2)) {
        Serial.print(F(" - R2:"));
        Serial.print(Xbox.getButton(R2));
      }
      Serial.println();       
    }
  }
  delay(1);
}

E questo e quello che mi dice l'ide di arduino aver fatto verifica/comilazione:

Code:
In file included from xboxusb_original.ino:7:
C:\Documents and Settings\Scanta\Documenti\Arduino\libraries\XBOXUSB/XBOXUSB.h:24:17: error: Usb.h: No such file or directory
In file included from xboxusb_original.ino:7:
C:\Documents and Settings\Scanta\Documenti\Arduino\libraries\XBOXUSB/XBOXUSB.h:99: error: expected class-name before '{' token
C:\Documents and Settings\Scanta\Documenti\Arduino\libraries\XBOXUSB/XBOXUSB.h:101: error: expected `)' before '*' token
C:\Documents and Settings\Scanta\Documenti\Arduino\libraries\XBOXUSB/XBOXUSB.h:130: error: ISO C++ forbids declaration of 'USB' with no type
C:\Documents and Settings\Scanta\Documenti\Arduino\libraries\XBOXUSB/XBOXUSB.h:130: error: expected ';' before '*' token
C:\Documents and Settings\Scanta\Documenti\Arduino\libraries\XBOXUSB/XBOXUSB.h:132: error: 'EpInfo' does not name a type
xboxusb_original:8: error: 'USB' does not name a type
xboxusb_original:9: error: 'Usb' was not declared in this scope
xboxusb_original.ino: In function 'void setup()':
xboxusb_original:14: error: 'Usb' was not declared in this scope
xboxusb_original.ino: In function 'void loop()':
xboxusb_original:21: error: 'Usb' was not declared in this scope

Quindi per ricordare un po' di di cose aggiungo:
Ho un arduino uno, l'ide e un 1.0.3, ho scaricato le librerie e messe nei posti giusti(...credo..).
Quindi attendo un vostro suggerimento.
Grazie,
Brusertv
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 328
Posts: 22762
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Lì ti dice che non trova il file Usb.h.
Ma hai copiato tutti i file?
Logged


TV
Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si, la libreria usb.h c'e, scaricata il giorno che ho scaricato il programmma...
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 328
Posts: 22762
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Un esempio allegato alla lib ti viene compilato oppure no?
Logged


TV
Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non ci sono esempi allegati a questa libreria.
I file li ho scaricati dallo stesso sito:
le librerie le ho scaricate qui https://github.com/felis/USB_Host_Shield_2.0,
e l'esempio qui https://github.com/felis/USB_Host_Shield_2.0/tree/master/examples/Xbox/XBOXUSB,
prendendo spunto da questo sito http://www.circuitsathome.com/mcu/wireless-xbox360-controller-support-for-usb-host-2-0-library.
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 328
Posts: 22762
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Veramente ci sono. C'è una cartella examples con 4 esempi dentro. Se non li vedi non hai scompattato correttamente la lib.
Da https://github.com/felis/USB_Host_Shield_2.0
clicchi su "Zip" e prelevi l'intero archivio. Scompatti. Rinomini la cartella in qualcosa che non contenga il numero 2.0 (io ho messo "USB_Host_Shield"). Copi la cartella che si è generata dentro a /libraries.
Aprendo l'IDE, se scorri su Esempi/USB_Host_Shield dovresti vedere gli esempi. Se sei su Linux potresti avere il bug che non ti scorre il menu in basso per cui premi su "Apri" e cerca l'esempio in USB_Host_Shield/Examples/Xbox/XBOXUSB e carichi il file .ino.
A me ha compilato senza problemi.


* Senzanome.jpg (106.22 KB, 512x642 - viewed 25 times.)
Logged


TV
Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi sorge una domanda:
La cartella \libraries quale?
Quella in C:\Archivio\arduino-1.0.3\libraries, o quella in C:\Documents and Settings\Scanta\Documenti\Arduino\libraries?
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi sorge una domanda:
La cartella \libraries quale?
Quella in C:\Archivio\arduino-1.0.3\libraries, o quella in C:\Documents and Settings\Scanta\Documenti\Arduino\libraries?
Tutte e due (ovvero o l'una o l'altra).
Ma è meglio la seconda perchè, nel caso cambiassi IDE, ti ritroveresti comunque le librerie aggiuntive senza doverle ricopiare.
Inoltre non rischi di mischiare le librerie originali con altre di terze parti.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

TV
Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, capito.
Cosi' effettivamente compila e carica, ma se non erro quando il programma gira dovrebbe darmi dei messaggi in seriale, ogni volta che premo un pulsante del controller giusto?
Mi da solo il messaggio "XBOX USB Library Started", ma nulla piu'.
Cosa sbaglio ancora?
Logged

Pages: [1] 2   Go Up
Jump to: