Añadir I/O a arduino

Puedes usar Multiplexores para multiplicar las entradas tanto analógicas como las digitales pero eso sí , se ha de tener en cuenta el implementar un reloj externo que este en sincronismo con el ciclo del Programa, para que sincronice ambos. Es decir, si el ciclo de lectura de una entrada por programa es de 20 Ms por ejemplo, debemos samplear varias entradas en este ciclo , digamos que el multiplexor nos envía un barrido de 8 entradas hacia un solo `pin de entrada del Atmega, por decirlo de una manera más grafica seria como enviar 8 bits en serie hacia una sola entrada del Atmega, y por programa, debemos de samplear cada bit en sincronismo con el reloj externo. Así se leen estas 8 entradas en una tabla de tiempos
En el caso de multiplexar las salidas el tema se complica bastante ya que se utilizan laths que “memorizan “ durante un tiempo las tensiones de salida, por lo tanto, la sincronización con el reloj externo depende del ciclo de latencia de cada laths

Espero que te pueda ser de utilidad. Un saludo cordial.