Which arduino for my project with 100's of led's and sound?

I took two semesters of EE and two semesters of Mechatronics in my undergrad but that was a while ago. I have some exposure to arduino but it was in the form of being handed everything I needed in a kit and being asked to make a certain circuit. So I am in need of help knowing which arduino and how many I need.

Project: Kids interactive activity table.

Desired in project:

  1. 100 - 200 LED's
    i) Independent control of many LED's at once
    ii) Selector buttons for different scenes (e.g. airport landing, earthquake, etc.)
  2. Sound effects and recorded voice playback
    i) Sounds linked to push buttons and toggle switches for scene selections
    ii) Possible sub-woofer for bass/rumbling
  3. Switches
    i) 3 - 5 toggle switches
    ii) 5 - 7 momentary push button switches

I have found many forum threads showing that it is possible to control 100's of LED's with arduino(http://forum.arduino.cc/index.php/topic,15933.0.html). As well as ways to accomplish it so I think I can get there as long as I get the right arduino to start with.

I also found that the arduino due can play .wav files from an SD card. Can I get that capability out of different arduino boards? What board or boards would best serve me in completed a project with these requirements? Thank in advance for your help and time.

With [u]shift registers[/u] you can have individual on/off control as many LEDs as you want using 3 Arduino output pins.

For 5 + 7 switches you'll need 12 inputs.

The Arduino Uno has 14 I/O pins, plus 7 analog inputs that be optionally programmed for digital input. Two I/O pins are used for the serial/USB port, and it's easier if you avoid using those for anything else and use the "analog" inputs instead.

Note that the shift register method won't allow dimming or the use of RGB (multi-color) LEDs, and the standard shift register only works with "regular" LEDs, not "high power" LEDs. "high

I also found that the arduino due can play .wav files from an SD card.

For good quality sound, you'll want an audio shield (add-on board). The Arduino doesn't have a true DAC, so although with PWM it can make some sounds. The audio shield is also going to require some I/O pins, but I've never used one so you'll have to check the particular board you choose.

I have found many forum threads showing that it is possible to control 100's of LED's with arduino(http://forum.arduino.cc/index.php/topic,15933.0.html).

That is an old thread, while the data is still valid I would think the best way to proceed now is to use a RGB LED strip like this:-

It is so much easier to get going.

I also found that the arduino due can play .wav files from an SD card. Can I get that capability out of different arduino boards?

Yes you can, although you will need a D/A converter as well as the SD card interface. Because to the speed of the speed of the other Arduinos the sample rate is limited.
The Due will need some sort of SD card interface as well. The SPI pins do not come out on the normal headers but on the 6 pin programming header, so you need to cope with that. The Due also has a built in D/A converter so you don't have the problem of the other cards where you have to bit bang the D/A to prevent you having to open and close the SD card file on each sample.

The other stuff you need is just trivial.

Simple way to drive individual LEDs (monocolor) is to use MAX7219, controlling 64 LEDs each; basically 8 shift registers per device, you write a value to a shift register via SPI.trainsfer( ) and the attached LEDs turn on/off.
I have a little breakout board that makes it easy to connect individual LEDs and spread them around.
For sound, any MP3 playback card that the Arduino controls via serial messages works great. Search MP3 at www.mdfly.com for inexpensive cards.
Any Arduino card can handle these tasks pretty easily. A 1284P based card with 16K SRAM for large variable arrays, 32 IO, and 128K flash will have plenty of resources for your project.
Cross Roads Electronics

Thanks for the quick responses and the help. I noticed that the arduino due runs at 3.3V. Is that going to be a problem when trying to run all the LED's and sound at the same time? Would it better serve me to go with Mega 2560 or ADK? Is that too much board?

Can use a level translator to bump levels up to 5V interfaces.

Or you can use Colorduino boards. They control 64 LED channels each, with quite high current capabilities.
http://imall.iteadstudio.com/im120410004.html
(You can get them very cheaply via eBay.)
They are intended for RGB LEDs but will work with individual ones.
Control of Colorduinos from an Arduino is a bit tricky to figure out but once sorted require very little programming overhead.

This may be useful if you want to arrange the LEDs in a particular spatial way, ie not in strips like the Adafruits.
And would be simpler than constructing something from individual components.

Any Arduino board will control multiple Colorduinos but the larger memory of the MEGA is useful.

Steve

CR,

For that many shift registers, do you need to wait long enough for the signals to propagate to the last register before toggling the enable or storage pin? Also, if OP needs 100-200, will 25 shift registers be able to work in series? I only used a couple of them in series.

It takes no longer to propagate from one cell to the next as to propergate to 1000 cells. If you think about it just before the last shift clock pulse all the bits are only one cell away from where they should be.

Yes, outputs change on rising edge of ssPIN going high.
I use multiple SS for multiple MAX7219, find it easier to code that way as I'm not using any libraries.

Grumpy_Mike:
It takes no longer to propagate from one cell to the next as to propergate to 1000 cells. If you think about it just before the last shift clock pulse all the bits are only one cell away from where they should be.

I thought there is a short delay between first bit shifted in and last bit shifted out, which drives the next shift register. I will find some reference on 74HC595.

If you are using SPI at 8 MHz thusly:

PORTD = PORTD & 0b11111011; // clear SS on PORTD-bit 2
spdr = array[0]; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;
spdr = array[1]; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;
PORTD = PORTD || 0b11111011; // set SS

Then you can send out 2 bytes for example and it will be just over 2uS from the start of the transfers and the outputs changing when SS goes high.

liudr:

Grumpy_Mike:
It takes no longer to propagate from one cell to the next as to propergate to 1000 cells. If you think about it just before the last shift clock pulse all the bits are only one cell away from where they should be.

I thought there is a short delay between first bit shifted in and last bit shifted out, which drives the next shift register. I will find some reference on 74HC595.

Ah you are talking about "ripple through", there are two types of shift register, synchronous where the clock is applied to all flip flop elements in the shift register and aysynchronous where the clock is derived from the last stage.
This applies to counters more than shift registers because you apply the same clock to all the shift registers. That is you do not have a shift out clock only a shift out signal.

Thanks again for the help. I have purchased a new uno and I am going to go with an MP3 shield. I will let you know how it works. Wish me luck.

Regarding the LEDs, everyone seems to have missed what I would have thought would be the obvious solution - plain old WS2812 individually addressable LEDs. These are RGB leds, and the brightness of each color can be set from 0-255 - in other words, you get 24-bit color. This seems like a much better way to drive lots of LEDs with an arduino.

There are a few parts here (see below) but operation is the same - Data in, data out, power, and ground - daisy chain the data, and make sure your power supply can drive them (60mA per LED if using WS2812/B). Then you send data for the pixels down the data in, and each one picks off the first set of colors it gets, and passes the rest on. This way you can control all the LEDs you could dream of with just one arduino pin. Everyone and their mom is using WS2812's with microcontrollers, and there are tons of code examples across the internet.

WS2812's can be had on individual breakout boards sometimes referred to as Pixels (maybe just by the NeoPixel people), these let you place the LEDs individually. They're also available in lines (for larson scanners), flexible strips, circles, rectangular arrays, and in strings like christmas lights. If you decide to make your own WS2812 boards, don't forget the bypass capacitor.

There are 3 parts that are very similar - WS2812B (4 pins) and WS2812 (6 pins - separate power for electronics, but no reverse polarity protection) are 5050 SMD LEDs with integrated controls. WS2811 is a small IC that can be connected to an external LED (used in the christmas light style strings). In any event, control is the same.

LEDs and their driver needs really depend on the project. If you're lighting up a model town or similar, then single color LED with just 2 wires from a somewhat central location can be easier to manage vs daisychaining 4-6 wires including power & gnd all over the place.