Did you have a situation when you ran out of microcontroller pins. Especially when you do lots of interfacing, adding many buttons or LEDs then you definitely need many I.O pins. Sometimes you can use more advanced microcontrollers, but this isn’t best solution especially when you don’t need much processing power. Why not to use I/O port expansion?
Keith decided to experiment with I2C port expanders connected to Arduino board. He used Texas Instruments PCA9535 and PCA9555 16-bit I/O port expanders – one for inputs and another for outputs. This way he managed to add 16 additional I/O pins by scarifying 2 MCU pins. Author has provided a generous description about whole process and even gives us a program code for trying.