Bulbs panel project

Hi there, some pals and i are working on a matrix of 250 1W LED bulbs (10 rows by 25 columns) to create figures by switching them on and off individually. This project was developed by a Japanese music band using arduinos and camera flashes instead of bulbs. Here you have the amazing result:

Our idea is to control all the bulbs through 4 arduino megas connected each to 8 blocks of 8 relays each block (63 outputs in use per arduino). Each arduino has the information of its corresponding bulbs in a submatrix for each animation. Hence, a fifth arduino communicates through I2C protocol with the rest of the arduinos, telling them the animation to show. I hope the idea is more or less clear...
Testing in a small scale with common LEDs and with ports manipulation, we have achieved to create synchronized animations. However, when setting the whole bulbs panel we realized that arduinos can't supply enough current to switch off simultaneously more than 10-12 bulbs (relays are turned off with a logic 1). Searching on the internet, it looks like a mega can supply a maximum current among all its pins of about 200 mA, being the maximum current of a single pin of 40 mA. If this is true, it's surprising the fact that a chip that controls up to 70 outputs is not able to activate more than the seventh part of them at the same time.
Therefore, and having into account these Japanese guys succeeded, we'd like to know which is the way to activate all (or almost all) the arduino outputs.
P.S.: We also tried unsuccessfully to connect the outputs to a 1K resistor followed by a 2N222A transistor to amplify the current.
Thanks a lot!!!

See http://arduino.cc/en/Tutorial/ShiftOut

TPIC6B595

They can sink 150 mA continuously on all outputs simultaneously, and are a lot cheaper than 5 Megas.

OK, so the salient points here are:

  • You do not need multiple MCUs. The added complexity of the code to intercommunicate is generally not worth it. You need to use shift registers for output expansion, such as the TPIC6B595 cited. That means, learn about output expansion, shift registers and such.
  • Except for single, ordinary LEDs, the Arduino does not power anything in itself, neither powerful LEDs, relays, servos, motors or whatever. You always provide a separate power supply for these and need driver devices. The TPIC is a superb one for this purpose.
  • The TPIC in itself does not provide current limiting or PWM dimming - you need current control; for a 1W LED or series chain thereof (up to 3) this might be a resistor, otherwise a current driver of some sort.
  • For regulation to such things, you want switchmode regulators/ power supplies - you do not want to be fiddling with matching voltages beyond the design stage and apart from the one in the Arduino, you do not want the power loss and heat dissipation of linear regulators.
  • Study the references for storing the data patterns in the main program memory rather than RAM or EEPROM. Consider simple compression techniques.

the simplest thing you can do is use N-channel MOSFET and forget about the relays all together, it's way cheaper, easier and reliable that way..

OK, so it's clear we have to use shift registers. TPIC6B595 seems to be a great option, as its own datasheet says it works fine with relays. However, it has only 8 outputs, not very much having into account that we have to control 250 bulbs. I've seen shift registers of 16 and 24 bits, for instance, which maybe are a better option.
Anyway, i'm wondering how many shift registers you can connect in a row, as i suppose there is a limitation. If not enough, do you think i can use more arduino's outputs with more shift registers and share clock and latch signal among all of them?