Need more pins on your Arduino? Maybe an I/O expander is what you need. These chips use the 2-pins of the i2c port to give 8 more in/out pins. You can have up to 8 of them share the same two pins for up to 64 additional pins! The trade off is speed (its about 50x slower to go through the expander than direct) and memory (the library takes up both RAM and flash). We wrote a handy library with examples of reading, writing and setting pullups for the inexpensive and easy-to-breadboard MCP23008.