Bezüglich des Busses hätte ich folgenden Vorschlag:

1. man definiert welche Hardware auf dem Board ist (Motortreiber, I2C, Digital I/O, Analog I/O)
2. man schaut wieviel Pins für die jeweilige Funktion benötigt werden (z.B. 2 für I2C)
3. man packt auf den Bus Pins für alle Funktionen, ohne Doppelbelegung!
4. dann müssen nur die eigentlichen Controller Boards entsprechend angepasst werden, d.h. wenn ein Controller auf einem Pin eine mehrfach Funktion hat (z.B. I2C und Digital I/O) muss der entsprechenden Controllerpin an beide Bus Pins geführt werden.
5. anpassen der Software Bibliotheken, so das für bestimmte Pins entweder (z.B.) I2C oder Digital I/O genutzt wird.

Just my 2 cent,

Andre