After various attempts/experiments to accomplish this project, I have to reorganize the information in the main article and make some remarks.
The purpose of this project is to develop a complex MIDI controller, with multiple configuration possibilities (peripherals, input and output).
For example, it will use the 16/36 … 64 or more potentiometers, encoders and buttons simultaneously.
During this work I met various problems that have made some initial estimates to be corrected.
Although initial experiments have shown that I can use different types of inputs with a single microcontroller, when I tried to increase the their number have shown the need to build more smart modules, each with specialized roles.
The biggest problems occurred in an attempt to use more rotary encoders. For this type of input we initially estimated that can be used another AVR microcontroller that is responsible for managing the low level inputs.Although I have tried many techniques and libraries available, tests have shown that it can’t reach enough reading speed (considering that the result of these readings should be forwarded to the main module). Details of these attempts are detailed in the article “Rotary Encoders Experiments“.
I also realized that giving up rotary encoders we can make a MIDI controller that is made easier, cheaper and still retain the original features of the project. This project will be developed separately and will be detailed in article Simple USB Arduino MIDI Controller.
Because the main microcontroller must receive values from other modules(and react to them) as soon as possible, we need more external interrupts than is available on ATmega32 .
So I changed from ATmega32 to newer Atmega1284 (same package 40pin DIP) where we can enable interrupts PCINT0…3 on every PORT/PIN. New post about using ATmega1284 in Arduino IDE here: http://openhardware.ro/using-atmega1284-arduino-ide/
This project is under develompent. We work at it every day. You can expect updates every 2-3 days. (on this article and/or subprojects).
Right now working at rotary encoder module:
and X-Y PAD:
First experiments with TFT as XY MIDI PAD are here http://www.instructables.com/id/XY-MIDI-Pad-with-Arduino-and-TFT/