Paso 4: Ahora nos ajuste el regulador para dar entrada!
queremos que el controlador para poder dar entrada en cualquier momento a arduino, y así utilizamos el siguiente código:#define PS3_F4_REPORT_LEN 4
#define HID_REPORT_FEATURE 3
#define PS3_F4_REPORT_ID 0xF4
prog_char feature_F4_report [] PROGMEM = {0x42, 0x0c, 0 x 00, 0 x 00};
/ * Establece el controlador de PS3 para enviar informes * /
para (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 ("informe de errores:");
Serial.println (rcode, hexagonal);
while(1); parada
}
Si te sientes ganas de hacer un poco de trabajo extra para estar fresco, puede establecer el LED 1 en el controlador de ps3 en. Esto se ve más pro desde cuando se conecta el controlador a una ps3, el LED se enciende, pero que no sea estética, esto no hace mucho. (Nota: también puede hacer el regulador rumble con arduino, bastante cool!) Aquí está el código para el 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, 0x27, 0 x 10, 0 x 00, 0x32, 0xff,
0x27, 0 x 10, 0 x 00, 0x32, 0xff, 0x27, 0 x 10, 0 x 00,
0x32, 0xff, 0x27, 0 x 10, 0 x 00, 0x32, 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
};
/ * Establece el PS3 controlador LED 1 * /
para (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 ("informe de errores:");
Serial.println (rcode, hexagonal);
while(1); parada
}
Más importante aún, el arduino necesita procesar las señales del controlador. Usa este código:
void PS3_poll (void)
{
rcode byte = 0; código de retorno
/ * Encuesta PS3 * /
RCODE = Usb.inTransfer (PS3_ADDR, ep_record [INPUT_PIPE] .epAddr, PS3_01_REPORT_LEN, buf);
Si (rcode! = 0) {}
retorno;
}
process_report();
retorno;
}