Bilen kontrollerade med PS3-handkontrollen (3 / 5 steg)
Steg 3: Använda USB-biblioteket
Nu bör du hämta den här till finna ut mer omkring registeransvarige: https://github.com/ribbotson/USB-Host/blob/master/examples/USB_desc.pde
Med denna kod reda vi på alla möjliga saker om arduino.
Se:
Start
freeMemory() rapporter 683
Enhetsbeskrivningen:
Säkerhetsbeskrivarens längd: 12
Deskriptor typ: 01
USB-version: 0200
Enhetsklassen: 00
Enheten underklass: 00
Enheten protokoll: 00
Max.Packet storlek: 40
Vendör ID: 054C
Produkt-ID: 0268
Ändrings-ID: 0100
MFG.String index: 01
Prod.String index: 02
Följetong antalen index: 00
Antalet conf.: 01
Konfiguration beskrivningen:
Total längd: 0029
NUM.intf: 01
Conf.Value: 01
Conf.string: 00
Attr.: 80
Max.PWR: FA
Interface beskrivningen:
Intf.Number: 00
Alt.: 00
Slutpunkter: 02
ITF. Klass: 03
ITF. Underklass: 00
ITF. Protokoll: 00
Intf.string: 00
Okänd beskrivningen:
Längd: 09
Typ: 21
Innehåll: 110100012294000705
Slutpunktsbeskrivning:
Adress för slutpunkt: 02
Attr.: 03
Max.pkt storlek: 0040
Avsökningsintervallet: 01
Slutpunktsbeskrivning:
Adress för slutpunkt: 81
Attr.: 03
Max.pkt storlek: 0040
Avsökningsintervallet: 01
memoryMin() rapporter 336
Nu måste vi få biblioteket och controller synkroniseras upp. Det gör använda vi följande kod:
TypeDef struct {
byte epAddr; Kopiera från slutpunktsbeskrivning utan bit 7 om Ställ
byte Attr; Slutpunkt Överföringstyp.
unsigned int MaxPktSize; Maximal paketstorlek.
byte-intervall. Avsökningsintervallet i ramar.
byte sndToggle; senast växla värde, bitmask för HCTL växla bitar
byte rcvToggle; senast växla värde, bitmask för HCTL växla bitar
} EP_RECORD;
och även detta:
device_descriptor = (USB_DEVICE_DESCRIPTOR *) & buf;
om ()
(device_descriptor -> idVendor! = PS3_VID) || (device_descriptor -> idProduct! = PS3_PID)) {
Serial.println ("Unsupported USB Device");
While(1); Stanna