So I want to build an interface with 16 rotary encoders, 16 switches, 16 led. The Mega seems a very straightforward solution... but just as a sanity check, it wouldn't choke on that many potential inputs would it ?
I guess worse case is one hand pressing ~5 buttons at once, other hand rolling across ~8 encoders at once.
Well the Arduino Mega provides 54 I/O pins. As I count your pin requirements, I come up with 64 pins needed. The Seeeduino Mega board pins out all 70 of the possible I/O pins from the Mega1280 processor, so it could handle your worst case I/O pin requirements.
There are several methods of saving on pin counts. Your 16 switches could be wired to a resistor string and be read on a single analog input pin, but your program would have to require that only one switch be operated at a time. You can also use external shift registers to read your 16 switches using only maybe 3 pins. Shift registers can also be used to handle your 16 LED outputs, again using 3 pins or so.
The biggest hurdle would be the speed requirement to process the 16 encoders. It depends on how fast the encoders will be turning and how many encoders can be turning at the same time. If being turned by hand, or only one encoder turning at a time, then maybe not a problem, but if turning too fast, or too many turning, I'm sure you would end up missing step counts on some encoders sometimes. This speed/timing task with the encoders will be the most difficult to determine up front.
EDIT: your second post says "oh and the pots would simply be the regular 'midi cc' resolution (0-127)" Is that what you meant by encoders in your first post. Pots and rotary encoders are different things. Do you have a link to an actual 'midi cc' pot? That could change my whole evaluation.
thanks lefty. could analogue inputs be used for the rotary encoders somehow?
Not to gain any pin count advantage. Analog input pins can be used as digital input pins, but that doesn't gain you any more pins. Most incremental encoders require two digital inputs each. Also the type of encoder being used is important also. Mechanical contact type encoders tend to have contact bounce requiring more time consuming software to debounce them, or external filter components. Optical encoders don't require debouncing, but are more expensive up front.
You could also rethink you project and package it into more then one standard arduino and then have the boards talk to each other to help accomplish the overall objectives.
The Seeduinome Mega looks like a good place for me to start I think, thanks a lot for pointing that out. I think the worst case scenario I talked about above is pretty unlikely. These boards are so well priced compared to other options i've explored in the past I don't mind just jumping in.