A Framework For Making Affordable & Stylish Modular Controllers (USB to MIDI, HID, or Serial)

FeaturedContest Winner

Step 12: Linking Module Together With I2C

Picture of Linking Module Together With I2C

To enable module->module communication you simply connect the modules together and enable I2C-mode in the code. Only your master module will plug into the computer via USB. You must connect all your modules together, then plug in the USB. If you plug in USB before connecting the modules together there will be no communication and all the controllers will freeze. 

DO NOT plug the modular connectors in backwards to the PCB or bad things may happen. Ensure your red cable is lined up with the power and the black cable is lined up with ground at all times. 

Below is a video showing module->module connections between three modules (one master, and two slaves). 

You can link as many modules together as you like. As you can see from the video, each slave module had a free I2C slot allowing more modules to be connected in series. 

Hi there, I have an other question concerning the I2C module->module communication. It looks like a great feature if you want to use all modules with only one USB-Port. But if I have enough USB-ports on my computer it seems to be much easier just to connect every single module via its own USB. Or would it be a problem if I have thee Teensys all connected via different USB-ports to tractor?
Fuzzy-Wobble (author)  balduin-kowalski3 years ago
I recommend using I2C. Modular is always better. It is not very difficult to enable I2C.
Hmm, okay. But can you just tell me WHY it is always better to use I2C? Don´t get me wrong, but I would just like to know the pros and cons. Yes, it is easier if you can use all modules with only one USB-Port, but this also means you can not use the slave-modules as standalone-controllers anymore (unless reprogramming them).
Fuzzy-Wobble (author)  balduin-kowalski3 years ago
OH I see, so sometimes you want them modular, and other times you want them standalone. That is an interesting feature I have overlooked. If you use multiple USB ports just ensure you change the 'channel' in the code of each controller. This ensures they are all sending different MIDI messages. Best of luck.
video is private :/