 It's easy to run out of microcontroller pins once a project really gets going. But you don't have to replace the board to get more. You can simply add a port expander. This MCP2307 port expander chip uses I2C to add 16 general-purpose input or output pins to your board. Each pin has an internal pull-up resistor you can enable in software, and the chip's I2C address can be set by tying a combination of its address pins to ground. Setting one of these chips up on a breadboard is fast. Just connect power, I2C clock, and data, tie the reset pin to positive voltage, and ground the three hardware address pins. Reading and writing to the IO pins is simple, thanks to the software library. Up to eight MCP2307s can be chained together, for a total of 128 pins, which is a lot.