//include the third party library to manage HID #include "HID-Project.h" //declare understandable var to recognise button in the code, //the value is the pin number of the Arduino on which the push button is plugged const int Button = 4; int lastButtonStatus[32]; void setup() { //define the diffent pin of the arduino as input pullup pinMode(Button, INPUT_PULLUP); //initialise the gamepad Gamepad.begin(); } //function that will be executed again and again and again... void loop() { //to keep the loop clean and understandable //Button management externalised to another function ButtonCheck(Button, 1); } // function that check the button state // the parameters are // inputNB => the pin nb of the button of the push button // gamepadButtonNb => which gamepad number will be pressed when the push button is pressed void ButtonCheck(int inputNb, int gamepadButtonNb) { //we check and store the button status int ButtonVal = digitalRead(inputNb); // if the button state have changed, it means the user pressed or released the physical button if (ButtonVal != lastButtonStatus[inputNb]) { // if the status is LOW, it means the user pressed the physical push button // remember, the INPUT_PULLUP invert the value if (ButtonVal == LOW) { //don't forget to update the last status of the button lastButtonStatus[inputNb] = LOW; //and then we "press" the gamepad button Gamepad.press(gamepadButtonNb); Gamepad.write(); } else { // if the input is HIGH, it means the user released the physical push button //don't forget to update the last status of the button lastButtonStatus[inputNb] = HIGH; //and then we "release" the gamepad button Gamepad.release(gamepadButtonNb); Gamepad.write(); } } }