Buttons: Matrix vs Shift Register

Hello folks!

Well, i have those two projects: both are HID Gamepads to use with Flight Simulator. One will be a "simple" gamepad with 64 buttons only (none axis) + 3 LEDs. The second one is more complicated. It will have something about 26 buttons (and toggle switches) + a few rotary encoders (will be used as buttons too) + a few LEDs. Of course, i'll use 2 Arduino boards (Mega, Bobuino or similar).

The question is: should i use shift registers (74HCT165) to read the state of all those buttons, or should i wire all those buttons in a matrix? And what's the difference?

And more important. If i change the Arduino's firmware to a USB Joystick (a modified version of Darran's Arduino-UNO-Joystick), i can read button state (LOW/HIGH) wiring pin with GND / VCC. Can i read the state of the button if wired with shift register / matrix?

Thanks for the help!


A button matrix allows to read one pressed button at a time, not multiple buttons pressed together.

You can connect to a shift register whatever sensor you can connect to an digital input.

Cool! Thanks bro! :wink: