I’m trying to get 16-modes working on an Arduino Pro Micro based analogue joystick.
This uses the MHeironimus 2.08 joystick library. I press a SHIFT button, then move North, East, South or West to set the joystick into a different mode. E.g. North for a driving mode on a stick, where North = R2, South = L2 and East/West are LX (steering).
Plugged into a HID Remapper v6, the monitor detects L2/R2 input. R2 axis sits at -32767 and when the stick is pushed, goes up to +32767. Same for L2 axis. No L2/R2 button output.
If I connect a PS4 Dualshock, L2/R2 button output is sent, and the axis range is 0-255. Sits at 0 normally.
In Joypad.ai on-line - I see L2 and R2 output.
As soon as I connect the HID Remapper v6 to a fully updated Brook Wingman FGC2, the triggers are only detected from a PS4 Dualshock. No matter what port I use, the Arduino 16-bit joystick output is lost/ignored/who knows?
I’d love to get this working for people on the PS5 if possible. Could really open up a lot more gaming if possible. Any help much appreciated.
Thanks Jacek, appreciated. Instant improvement, with some L2/R2 output getting through. Thank you. However, it’s very flickery. Any thoughts on how to improve that? I’m forcing the L2 axis > L2 etc. on just port 1 at the moment. In the HID Remapper monitor I can see the values alternating between -32767 and 32767 very fast.
I’ve tried disabling the previous L2/R2 mappings but it flickers even if it’s reduced to just digital L2/R2 output. This is in port 1 on the HID Remapper v6.
The flickering between -32767 and 32767 is concerning and means we’re not getting the right values from the joystick, before we even consider sending them out to the FGC2 etc.
I looked at the Arduino library repository and there are some issues that might be related to this behavior. A release from 2022 changed the range from -32767..32767 to 0..65535 and was marked as fixing issues “in Unity games”. I don’t know what version of the library (and what other code) your joystick is using, but at least it definitely looks like it’s not the newest one. I suspect there was something wrong with the data it was sending previously but it was somehow masked by Windows or something (in non-Unity games at least).
Do you have the Arduino code that runs on the joystick or did it come like that from the manufacturer?
Hi Jacek, You’re right there was a change with the code. I recently discovered that the library update after that 2022 version was breaking compatiblity with the HORI Flex. I could give it a try with the new library, but I’ll have to change a lot of code to do that, and it will likely introduce new hassles. The HID Remapper v6 is superior to the Flex in many ways though, so if I have to, I will.
I’ll send you a private message with the Arduino code for the joystick I’m working on.
Just as a follow up, Jacek spotted this issue with the code I was using:
”By default it sends the inputs every time you do a Joystick.setRxAxis() etc. And you do Joystick.setRxAxis(0) in updateJoystick() before all the other logic. So it flickers because it sends a zero in before every real input.
Try changing Joystick.begin() to Joystick.begin(false) to stop it from sending out an input on every Joystick.set… call.”
Sorted! Huge thanks. Triggers now much happier with the HID Remapper in forced PS4 mode, and the Brook Wingman FGC2 (fully updated) into the PS5. Really happy to have discovered the HID Remapper world you’ve made here. And what a brilliant little chip that Raspberry Pi RP2040 is. Really helping disabled gamers.