Make sure that all the arguments passed are indeed DigitalInOut. This avoids crashes when the users pass something else.
The example code for the gamepad module would skip detected button presses in the code that waits for a button to be released, because it would run it even when no button is pressed. Also updated the example pin names to not use RX and TX.
gamepad
The `GamePad` singleton monitors buttons in the background to make sure a button press is never missed and debouncing happens consistently.