Ok that is just awesome!
If it's ok, I do have some questions.
1. The pcb's receive the input from the switches, then send the inputs to the arduino for processing, then the arduino sends those inputs to the computer, is that correct?
2. The large black rectangle on the right side of your pcb's looks like it can have a chip installed into it, what type of chip would go there and what would it do?
3. What does the red switch box on the pcb's do?
4. Why is there a need for a reset button on the pcb's?
5. What software will you use to program the arduino/buttons?
6. Could you post a picture of the back of the pcb's?
Sorry for all the questions but as I've mentioned before, I'm interested in learning to do DIY button boxes myself, so I've taken a very keen interest in your build.
You rock! Very excited to see this completed but at the same time I don't want it to end!
No worries about the questions! I will gladly answer them. If i wasn't fishing for compliments or talks i shouldn't posted it in the first place, lol.
Here we go:
1. Correct
2. That socket is for the MCP23017 IO Expander. It receives the input from the analog switches, converts them to a serial signal which is sent to the Arduino. The MCP23017 can be configured with a unique ID (the red switches) so i can daisy-chain the expansion boards. The Arduino doesn't have enough pins to cope with all the switches and by using these IC's I can expand them to up to 128 signals, or (8 boards) without having to redesign my entire PCB's.
3. See #2, it configured the slave address
4. The Arduino doesn't have a reset switch on the board, and press a button is easier than unplugging/replugging the joystick. Only the Master board needs the reset switch. On the photo both boards have a reset switch, but that is my error.
5. No software. The buttons are simply mapped to the USB HID descriptor. The only exception are the HAT1 and HAT2 connectors on the Master board, they are mapped to a HID 5-way hat for easy configuration. I should say that my firmware does some internal tricks to push lighting effects (which is handled by a separate board).
6. The back side is the least interesting bit. You only see the soldered connectors. There's no parts, and the few traces there are covered by a while silkscreen. So basically, it is a blank.
My current setup still uses the prototype boards you saw in previous photos. The IO expanders that I have are soldered to the boards and I am all out of MCP23017's. This is why the sockets on this picture are empty. I am waiting for a new set of chips to come in.
The white boards are really nothing special. The most important thing they do it split up the many GND and 5V lines and provide a good connection between all the pins. I am almost a religious person when it comes to polarized connectors. Every connector was configured for a purpose and brings its own GND or 5V lines. This way i have no wire splices in the rest of the project and this allows me to build the thing one segment at a time.
Here's a low resolution diagram of the PCB. It proves the simplicity of the board. This ain't rocket science, the heavy work went in the firmware (analog input smoothing) and the hardware design.
