jueves, 2 de agosto de 2012

IOExpander un nuevo Shield de Arduino que permite manejar 32 I/O mediante I2C

El nuevo Shield IOExpander permite manejar 32 pines de I/O configurables a través I2C. Esta placa se basa en el en el chip de Microchip MCP23017. Este chip incorpora 2 puertos, un puerto A y un puerto B, cada uno de ellos de 8 I/O configurables, cada pin de estos puertos se puede configurar como entrada o como salida. Además este chip incorpora la funcionalidad para generar una señal de interrupción en un pin INTA/INTB adicional, uno por cada puerto, de forma que si se produce un cambio en una entrada del puerto A, se genera una señal de interrupción en el pin INTA y de igual forma ocurre con el puerto B.


Siguiendo esta funcionalidad, las 32 I/O que incorpora este Shield, están organizadas en 4 puertos ya que incorpora 2 chips. Es decir, un chip A incorpora un puerto A y un puerto B de 8 I/O y a su vez el chip B incorpora otro puerto A y otro puerto B. Para el control de este Shield se ha desarrollado una librería compatible con el IDE de desarrollo de Arduino 1.0.1. Esta librería incorpora funciones para realizar las funciones principales de forma sencilla, entre ellas se encuentran configurar el modo de los pines, escribir en un puerto o pin determinado, leer de un puerto o pin determinado, habilitar la interrupción desde un determinado pin de un puerto dado.


El Shield, está preparado para poder ser apilado, de forma que se pueden emplear varios de estos al mismo tiempo, gracias a un dipswitch incluido que permite configurar la dirección I2C de cada chip. Posteriormente, a través de el método begin de la librería es posible configurar la dirección de cada uno de los chips en el software.