I have been working on prototyping a project involving a bank of buttons, which when pressed light up a corresponding LED, and send a keypress to a computer using my Arduino Leonardo. I had this working on a breadboard using a MCP23017 I2C 8-bit I/O expander. Since this was working well, I decided to design this custom shield (Unknown DomainFritzing-_%5BPCB_View%5D-20130820-205621.jpg) and have it etched. I started assembling the PCB this week and ran into some issues though. Despite soldering a few of the buttons to the board, the i2c chip, and all of the pulldown resistors, the response from the i/o expander is one of all high (11111111). My best guess would be a floating ground somewhere, but in that case, I'm not sure why the buttons I do have attached to the board are reporting as high, and I have even tried manually bridging the i2c input to the output from a pulldown resistor, to no real success. Any ideas?
As a side note, there is a major design flaw in the PCB, where the buttons are rotated 90 degrees incorrectly. To counter this, I have soldered leads onto the momentary buttons to the proper connections, (5v and ground only being connected when the switch is depressed, and ground and the output to the I2C chip always being connected).