Manette PS2 Sans fil avec Arduino Uno et Wemos.

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)

Personne n'aurait une idée ?