Play sound with Arduino

My robotics team needs a little help. We have an Arduino Uno and a Duemilanova. We also have an SD card reader. What we want to to is put some sound files on the SD card and play a specific file when a button is pressed. The goal is to create an interactive display where people can press a button and get information. What would be the best format to use, WAV, MP3 or something else? The information will be spoken. Also, what size SD card can the Arduino recognize? We have almost everything from 2gb to 16gb. Will any work or just a certain size? Any links to code would be greatly appreciated.


You need an MP3 shield, one that allows you to enter the track number and play it. You can do a search for Arduino MP3, and your mostly likely going to either get a shield or a small chip like board. If the vender is nice, they will have a sample code you can look at before you buy the part. Shields tend to be the easiest to program, but if you already have multiple things running off the Arduino, your more likely to have complications with pin usage. So check the schematics and data sheets on what pins the shield takes up before hand.

There is another active thread where the poster was asking the same question, as was pointed to some MP3 shields that could do what you want:

Here is another one from a US supplier I've bought other components from:

A somewhat cheaper approach would be to use a WTV020SD16P based card that plays WAV files (note, many of these WTV020SD16 devices will only take older, smaller SD cards up to 1GB):

Looks like you want to do this project of mine

So, something like this from Sparkfun or anyplace really? My assumption is then have the arduino wait for a button press and then it can “play track 3” or “play track 1”. Basically that’s it, right? Since children will be able to access this, how could we address multiple button presses? Like some kid presses 3 buttons at once. Is there a way to code for that?

Or you could try the SimpleSDAudio library, which uses PWM to output sound direct form the Arduino. It reads from an SD card.

The only Caveat is that you have to convert the files first, but that is a simple drag and drop operation.

The sound quality is very respectable and you can do 8 bit Mono and Stereo and even a pseudo 16 bit Mono and Stereo.

I looked at the Simple SDA Library. That looks sort of complicated. My students (and I) are new to the whole Arduino platform. I think we will go with a MP3 shield. I found a couple on Amazon that are in our price range. If we get something working, pictures and an update. We may need help along the way. I will be sure to ask. Thanks!

You are better off getting one of these:- It uses wav files.

Like some kid presses 3 buttons at once. Is there a way to code for that?

Sure you just have to define exactly what you want to do in those circumstances.

No comment on my project? I would have though it was exactly what you wanted.