http://www.microchip.com/wwwproducts/en/MCP23017
Utilizarlo puede ser un poco dolor de cabeza, ya que para configurar el chip es necesario utilizar siempre direcciones y registros internos del chip. Para simplificar la tarea he creado esta pequeña librería https://github.com/ResonantWave/mcp23017_lib.
Una vez conectado el chip, la librería proporcionará un set de comandos muy similar al de RPi.GPIO, la librería más usada para los GPIOs en Python.
La asignación de pines sigue el siguiente esquema:

Y a continuación un pequeño ejemplo de uso, que configurará el pin #2 como una entrada, con la resistencia pull-up interna activada, y el pin #1 como una salida. Cuando el pin #2 esté en estado alto, el pin #1 se encenderá.
Código: Seleccionar todo
import mcp23017_lib as MCP
MCP.start(0x26)
MCP.setup(2, MCP.IN, MCP.PUHIGH)
MCP.setup(1, MCP.OUT)
while 1:
if(MCP.read(2)):
MCP.write(1, MCP.HIGH)
else:
MCP.write(1, MCP.LOW)