Bluetooth Gamepad
Introduction
This sample turns the ESP32 into a Bluetooth LE gamepad that presses buttons and moves axis
Possible buttons are: BUTTON_1 through to BUTTON_16 (16 buttons supported by default. Library can be configured to support up to 128)
Possible DPAD/HAT switch position values are: DPAD_CENTERED, DPAD_UP, DPAD_UP_RIGHT, DPAD_RIGHT, DPAD_DOWN_RIGHT, DPAD_DOWN, DPAD_DOWN_LEFT, DPAD_LEFT, DPAD_UP_LEFT (or HAT_CENTERED, HAT_UP etc)
bleGamepad.setAxes takes the following int16_t parameters for the Left/Right Thumb X/Y, Left/Right Triggers plus slider1 and slider2, and hat switch position as above: (Left Thumb X, Left Thumb Y, Right Thumb X, Right Thumb Y, Left Trigger, Right Trigger, Hat switch position ^ (1 hat switch (dpad) supported by default. Library can be configured to support up to 4)
Library can also be configured to support up to 5 simulation controls (can be set with setSimulationControls) (rudder, throttle, accelerator, brake, steering), but they are not enabled by default.
Testing
You can use one of the following applications on your PC to test and see all buttons that were clicked.
On Linux install jstest-gtk
to test the ESP32 gamepad. Under Ubuntu this can be done by typing the following command:
sudo apt install jstest-gtk
On Windows use this Windows test application.
References
SoC support
esp32
esp32c2
esp32c3
esp32s2
esp32s3
esp8266
host
rp2040