Midi controlled analog effect pedal switcher


I'm going to build a midi controlled analog effect pedal switcher. It basically has to receive midi commands from a foot controller (for instance Behringer FCB1010) and has to transfer these commands into switching relays and changing the value of digital potentiometers. It will have a small text based LCD screen and some push buttons to control simple functions/menus.

The software side is not yet my concern. I have experience with a PIC controller and interfacing it with ADCs and RS232 all done in assembler. Right now I'm going to do it with C which should be easier because of the availability of resources. For this reason I chose to buy a Arduino 2009 board.

My question relates more to how many ICs I can connect to the digital outputs/inputs of the chip. I will be using:

  • MIDI-in (and maybe out so I like to keep it unused)
  • 4 pins for a standard text based LCD
  • Output shift registers for switching relays and general purpose outputs
  • Several digital potentiometers: AD7376, AD5204
  • Input shift register(s) to read keys or any future function

Is it possible to cascade all of these chips or would it be a better choice to give each type of chip its own digital pins? And would I need to use multiplexers?

In other words my questions is: What is the best topology for connecting these component to the Arduino board?

Regards Jasper

MIDI-in (and maybe out so I like to keep it unused)

These use the serial port Pins 0 and 1 there is no choice unless you go for software serial.

As for the others you can either use shift registers or I2C port expanders like the MCP23016 which give you 16 I/O lines a chip. With up to 8 chips all from two Arduino pins (A4 & A5)

The advantage of these expanders is that you can keep on adding then on to a design as you need them, you don’t have to plan everything in advance. There is also an input changed signal from these chips so you can wire that to the direct Arduino pins and so don’t have to pole the I2C device to see if any input has changed, just pole the single bit.

Thanks for your reply!

That sounds very interesting. Especially the point where you say that you do not have to plan ahead.

Do you know, or does anyone else know where to get AD5606s? I know DigiKey sells the 10k version and also the 50k and 100k if you order at least 15 of them (which is a bit too much). But they charge you a lot for shipping. I would like to have a few of each resistor value. Of course I need a DIP package.

Do you have experience with ordering minimum quantities from Analog.com? They expect you to represent a company and need a VAT number. (Btw, I'm from Europe). I filled out a fake one so I could finish registration, I hope this doesn't get me into trouble when I order.

I order a lot of my stuff from Farnell, they have a minimum order charge but not minimum order numbers so you can pick and mix what you like. They are not the cheapest but they ship all over Europe with no extra postage (it's built into the price), they are fast and reliable.

Especially the point where you say that you do not have to plan ahead.

Yes doing my latest project I ran out of I/O lines because I added some more functionality. So I simply added another I2C expander and I had 16 more I/Os.

Thanks again!

One point though, Farnell sells the ICs, but not the right package. They only sell the SMD version that only midgets can solder... I have been able to solder one of those once but I won't do it again.