Étape 4: Maintenant, nous avons mis le contrôleur à apporter sa contribution !
Nous voulons que le contrôleur pour pouvoir apporter une contribution à tout moment à l’arduino, et donc nous utilisons le code suivant :#define PS3_F4_REPORT_LEN 4
#define HID_REPORT_FEATURE 3
#define PS3_F4_REPORT_ID 0xF4
prog_char feature_F4_report [] PROGMEM = {0 x 42, 0x0c, 0 x 00, 0 x 00} ;
/ * Mettre la manette PS3 pour envoyer des rapports * /
pour (i = 0; i < ps3_F4_REPORT_LEN; i ++) buf [i] = pgm_read_byte_near (feature_F4_report + i) ;
RCODE = Usb.setReport (PS3_ADDR, ep_record [CONTROL_PIPE] .epAddr, PS3_F4_REPORT_LEN, PS3_IF, HID_REPORT_FEATURE, PS3_F4_REPORT_ID, buf) ;
Si (rcode) {}
Serial.Print ("erreur de rapport de la valeur:") ;
Serial.println (rcode, HEX) ;
while(1) ; arrêter
}
Si vous avez envie de faire un peu de travail supplémentaire vient d’être cool, vous pouvez également définir la LED 1 sur le contrôleur de la ps3 sur. Cela semble plus pro que lorsque vous branchez le contrôleur à une ps3, la LED s’allume, mais autre qu’esthétique, cela ne fait pas beaucoup. (Remarque : vous pouvez également faire le contrôleur rumble avec l’arduino, pretty cool!) Voici le code pour la LED :
#define PS3_01_REPORT_LEN 48
#define HID_REPORT_OUTPUT 2
#define PS3_01_REPORT_ID 0 x 01
prog_char output_01_report [] PROGMEM = {0 x 00, 0 x 00, 0 x 00, 0 x 00, 0 x 00, 0 x 00, 0 x 00, 0 x 00,
0 x 00, 0 x 02, 0xff, 0 x 27, 0 x 10, 0 x 00, 0 x 32, 0xff,
0 x 27, 0 x 10, 0 x 00, 0 x 32, 0xff, 0 x 27, 0 x 10, 0 x 00,
0 x 32, 0xff, 0 x 27, 0 x 10, 0 x 00, 0 x 32, 0 x 00, 0 x 00,
0 x 00, 0 x 00, 0 x 00, 0 x 00, 0 x 00, 0 x 00, 0 x 00, 0 x 00,
0 x 00, 0 x 00, 0 x 00, 0 x 00, 0 x 00, 0 x 00, 0 x 00, 0 x 00
};
/ * Le contrôleur PS3 1 LED sur la valeur * /
pour (i = 0; i < ps3_01_REPORT_LEN; i ++) buf [i] = pgm_read_byte_near (output_01_report + i) ;
RCODE = Usb.setReport (PS3_ADDR, ep_record [CONTROL_PIPE] .epAddr, PS3_01_REPORT_LEN, PS3_IF, HID_REPORT_OUTPUT, PS3_01_REPORT_ID, buf) ;
Si (rcode) {}
Serial.Print ("erreur de rapport de la valeur:") ;
Serial.println (rcode, HEX) ;
while(1) ; arrêter
}
Plus important encore, l’arduino doit traiter les signaux émis par le contrôleur. Utilisez ce code :
void PS3_poll (void)
{
rcode octets = 0 ; code de retour
/ * sondage PS3 * /
RCODE = Usb.inTransfer (PS3_ADDR, ep_record [INPUT_PIPE] .epAddr, PS3_01_REPORT_LEN, buf) ;
Si (rcode! = 0) {}
retour ;
}
process_report() ;
retour ;
}