Bonjour,
ça fait maintenant plusieurs jours que je m'arrache les cheveux a essayer de faire fonctionner ce projet.
J'ai une manette de PS2 branchée à un Wemos (esp8622 Wifi), ce Wemos récupère les informations de la manette et les envoies via WebSocket à un autre Wemos qui sert de point d'accès Wifi.
Ce dernier est branché en série sur un Arduino Uno utilisant la librairie UnoJoy.h pour retranscrire les données reçu, en données HID via l'USB, avec un flash du 16U2.
Seulement voilà, j'ai plusieurs problèmes, La récupération des données sur le port Série n'est pas optimale et je reçois parfois des Symboles carré vide, là ou il devrait y avoir des 0.
Ensuite, la retranscription de la chaîne de données hexadécimales en touches n'a pas l'air de fonctionner non plus.
Le Wemos envoie ceci a l'arduino via le port série :
<FF735AFFFF748F6D80000000000000>
Mais l'arduino enregistre apparemment ça :
FF735AFFFF70808487000
La fin devrait être des 0 aussi.
Ensuite pour la retranscription j'ai ce code :
#define PSB_SELECT 0x0001
#define PSB_L3 0x0002
#define PSB_R3 0x0004
#define PSB_START 0x0008
#define PSB_PAD_UP 0x0010
#define PSB_PAD_RIGHT 0x0020
#define PSB_PAD_DOWN 0x0040
#define PSB_PAD_LEFT 0x0080
#define PSB_L2 0x0100
#define PSB_R2 0x0200
#define PSB_L1 0x0400
#define PSB_R1 0x0800
#define PSB_GREEN 0x1000
#define PSB_RED 0x2000
#define PSB_BLUE 0x4000
#define PSB_PINK 0x8000
#define PSB_TRIANGLE 0x1000
#define PSB_CIRCLE 0x2000
#define PSB_CROSS 0x4000
#define PSB_SQUARE 0x8000
////These are analog buttons
//#define PSAB_PAD_RIGHT 9
//#define PSAB_PAD_UP 11
//#define PSAB_PAD_DOWN 12
//#define PSAB_PAD_LEFT 10
//#define PSAB_L2 19
//#define PSAB_R2 20
//#define PSAB_L1 17
//#define PSAB_R1 18
//#define PSAB_GREEN 13
//#define PSAB_RED 14
//#define PSAB_BLUE 15
//#define PSAB_PINK 16
//#define PSAB_TRIANGLE 13
//#define PSAB_CIRCLE 14
//#define PSAB_CROSS 15
//#define PSAB_SQUARE 16
//These are stick values
#define PSS_RX 5
#define PSS_RY 6
#define PSS_LX 7
#define PSS_LY 8
unsigned char GamePadData[21] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
boolean Button(uint16_t button) {
return ((~buttons & button) > 0);
}
buttons = (uint16_t)(GamePadData[4] << 8) + GamePadData[3];
GamePadData étant les données reçu en Série.
Je ne comprends pas vraiment comment la librairie code les données, je l'ai donc attaché en pièce jointe si vous y comprenez le fonctionnement.
Je vous remercie pour toute l'aide que vous pourriez m'apporter, je suis complètement perdu avec ce projet.
PS: c'est une manette Filaire que je veux rendre sans fil.
PS2X_lib.cpp (13.8 KB)
PS2X_lib.h (7.59 KB)