Picture of Low resolution display done right
A resolution of 8x8 pixels may not sound like enough for anything interesting, but with the right setup, it is possible to create beautiful, complex animations and even add some interactivity.

In the next pages I will detail the steps needed to build the low-res display you see in the video below.

Remove these adsRemove these ads by Signing Up

Step 1: Parts and Tools

Picture of Parts and Tools
The parts needed are:
- An LED matrix driver, I used a Rainbowduino from Seeed studio
- An RGB LED matrix compatible with the Rainbowduino
- A mini USB extension cable, used to bring out the connection from the board
- A wooden box
- Foam core board or a piece of card board
- A sheet of tracing paper
- Nylon standoffs for mounting the PCB.
- Optional: volume sensor / other amplified microphone

More details are in the attached BOM

The tools needed
- A drill
- A ruler
- A pair of scissors
- A box cutter
- A Pencil
- Paint brushes and paint
- Hot glue gun
- A screw driver

You will also need some adhesive tape.
1-40 of 57Next »
SchmurtzA11 months ago

Hi , very nice project, thanks to share it with us ;)
Do you think possible to adapt it with a bigger led matrix made with led strips ?

Something like that :


I cannot believe how amazing this project is!! But I need help!! PLEASE! I ordered the Rainbowduino from SeedStudio and the 8x8 led matrix. My problem is that I have never used an Arduino for anything before and cannot figure out how to program the code. What I think I understand is that the code was written to work for both the colorduino and the arduino hence the notes at the top of the code that note to change the values for the particular boards. I have programs a few of the easy example displays and got them to work but when I try to "verify" the code of the fire/plasma/emitter it tells me; " 'Rb' was not declared in this scope" and when trying another version I stumbled across it says; " 'ColorduinoScreenWidth' was not declared in this scope". Any and all help will be much appreciated! Thanks in advanced!

I cannot believe how amazing this project is!! But I need help!! PLEASE! I ordered the Rainbowduino from SeedStudio and the 8x8 led matrix. My problem is that I have never used an Arduino for anything before and cannot figure out how to program the code. What I think I understand is that the code was written to work for both the colorduino and the arduino hence the notes at the top of the code that note to change the values for the particular boards. I have programs a few of the easy example displays and got them to work but when I try to "verify" the code of the fire/plasma/emitter it tells me; " 'Rb' was not declared in this scope" and when trying another version I stumbled across it says; " 'ColorduinoScreenWidth' was not declared in this scope". Any and all help will be much appreciated! Thanks in advanced!

ANDRBE1 year ago

Can I just use the max7219 chip instead of Rainbowduino?

My computer just wont show the rainbowduino at all. I install the vcp drives and other stuff. Have everything and can't test it. Did you need to install anything to get it to detect?

I figured out my problem didnt have right libraries in arduino ide and was using wrong board. Think I might have had led board in wrong way too. Yeah I did about everything wrong I could.

Nice project
Thank you. I tested each program with 2 rainbowduinos and everything worked well. fantastic!
Never thought in a next project to make a spectrum analyser using two rainbowduinos? (left and right channel)
I just would like to do it, but i'm a newbie and rainbowduino is not well documented...
mikey11021 year ago
hi nice project having a few complications thow do i need an Arduino to program the files on or how do i get the files on sorry my first project.
thank you
shibs11 year ago
Hi Gilad

Again, thank you for sharing your firmware with the community. I thought I'd share with people my design at:


I added a grey transparent sheet between the tracing paper and an outer piece of clear perspex to enhance the contrast in higher ambient lighting conditions. Too be honest I'm actually not very happy with how the casing turned out, and I think I'll make a more 'conventional' square casing in the future to suit the aspect of the square RGB matrix (I think I was being just a little too clever and it never worked)

I think my favourite display is your 'spin' example. Very beautiful..and forever changing. Mesmerizing...
d4ng2 years ago
Any ideas of where to start to make this function on a one color matrix? The animations are so fantastic it would be great to use them on multiple matrices
ddeaton32 years ago
What length are the bolts for the standoffs?
wshankles2 years ago
Hi do you know if this mic will work? Is scl and aud the same thing?
giladaya (author)  wshankles2 years ago
SCL is the label of the pin on the Rainbowduino to which you should connect the microphone.
This pin is also called A5 and is one of the pins which are capable of analog input. This means it allows to measure different levels of audio volume vs just 0 or 1.

It is hard to see from the picture you attached whether this mic is amplified or not, but it needs to be amplified for the microcontroller to be able to read the audio levels.
rhaber2 years ago

Firstly, I'd like to say what a beautiful creation you have made. It is amazing what can be done with so few relative pixels to achieve that 'higher resolution look'. Congratulations. It is a really nice gesture of you to share with the world your firmware which has obviously taken a lot of time to produce. It is because of people like you that all the light based projects I have built over the years were even possible.

Based on your Instructable I have ordered the Rainbowduino and an RGB LED matrix. I am also seriously thinking about upscaling the display size to 2 or 3 times the size in this instructable for maybe a wall mounted display. According to the datasheet the MY9221 LED drivers in the Rainbowduino are rated to 17V. So, in theory, a custom 8x8 matrix could be made, where each of the 64 'pixels' would be made from 4 Red individual LEDs in series, 4 Blue individual LEDs in series, and 4 Green individual LEDs in series, all layed out in an appropriate pattern to maximise the uniformity of the colour mixing. Or maybe I'll just see if there are suitable high power RGB LEDs already available.

It is hard to tell from your videos but, does the display look good (ie. good contrast) in normal room lighting (with no external daylight)? I can imagine if the ambient lighting is too great then the contrast would reduce markedly. Of course, if one was using a much brighter custom 8x8 matrix display then maybe a (contrast enhancing) plain grey filter could be placed over the front tracing paper to increase the contrast in bright ambient conditions.

Thank you again for sharing. Todah Raba.
giladaya (author)  rhaber2 years ago
Thanks for your kind words :)
I think it looks pretty good in a lit room at night.
During the day in a room with an open window, you can see the animation, but some of the subtleties are lost as the light "masks" the dimmer pixels.
shibs1 giladaya2 years ago

Thanks for your reply. My LED matrix just arrived today but I think it is the wrong type as it appears to be in a semi-clear package (despite the ebay page saying it's a clear package), and the LED intensity is quite low as a result (I realise it's not going to 'super' bright because of the 1/8 duty cycle current source it's being driven with). The model number on the back (ie. pin side) of my LED matrix is CILE 2088RGB-5. Could you confirm the model number on the back of your LED matrix? Maybe it is something like ORM 2088RGB-5?

Thank you again
giladaya (author)  shibs12 years ago
Yeah, I have 2 such matrices and both have that model number: ORM 2088RGB-5
Foo_Plinger2 years ago
Is the Rainbowduino something I can build from parts, like a regular Arduino,or does it have to be ordered?
TomHammond2 years ago
I just about have my display built, getting ready to power it on for the first time!

With all of the patterns that you provided (thanks), is it possible to combine all of the patterns into one program, then cycle though the patterns every x minutes? I am also thinking of adding a button that forwards to the next pattern. Does the Rainbowduino have enough memory to do this? Would it be difficult to program?

giladaya (author)  TomHammond2 years ago
The main problem with doing such a thing is the limited memory available on the atmega328 - both the flash and the RAM.
You might be able to pull something like this off if you choose carefully which animations you run (ones with less particles) and recycle the particles themselves (IE two emitters using the same set of particles, one emitter is active each time)

Other ideas:
- use dynamic memory allocation
- find a way to run a different program after each reset of the board

Good luck and please share your results :)
IAMblacker2 years ago
sweet project!
But ,what if i use a Colorduino to replace the Rainbowduino?Is the libraries and examples still available?and ,is this powered by usb or something else?
giladaya (author)  IAMblacker2 years ago
The first incarnation was actually built with a colorduino, so the code supports it.
You need to have the colorduino libraries installed and change the "BOARD" constant in the sketch.
It is powered by USB.
Shoganator2 years ago

Thanks for the great instructable. This is one of the first that I actually followed through and completed.

Thought I would post up the result here: http://www.youtube.com/watch?v=JACAt7TDOjs

Still needs a coat of paint and some fine tuning of the mic input values though...

giladaya (author)  Shoganator2 years ago
Thanks for sharing!
Really nice to see it "in the wild" :)
bluemidget2 years ago
Love the project, makes a great hand-made gift for others. How do you have the Spy mic installed to the chipset? I cannot find any sort of tutorial, and it looks like you simply have it plugged into the Rainboduino.
giladaya (author)  bluemidget2 years ago
The mic is originally made of a small PCB connected to a cable, with the connection covered with some heat shrink tubing.
To connect it to the Rainbowduino I desoldered the original cable and replaced it with 3 short pieces of solid core wires, which I then plugged into the right pins in one of the Rainbowduino's headers (VCC, GND, SCL)

See attached image for a closeup of the connection.
kuorus2 years ago
Yay! My Rainbowduino arrived this morning, and now I enjoy my virtual flame in my desk :) Thanks!
Hello? Anyone? Batteries?
giladaya (author)  easilydistracted2 years ago
Just did a quick test with a cheap emergency USB charger that uses two AA batteries - seems to work well.
TomHammond2 years ago
Thanks for the feedback. What confused me was the description of the microphone needed, being (vcc, gnd and scl/a5). The latter means "Serial Clock to A5", but I have no idea how to find a microphone with that feature. I did gather that an amplified microphone is needed; that little I know. :)

Thanks for the link to dealextreme. I ordered one and will let you know how it works. I assume that the sound (mostly) passes through the tracing paper, no holes are needed?

Thank you!
TomHammond2 years ago
May I ask one more question? When choosing a microphone for this project (like a "spy microphone" on eBay), is there a mic specification that works best and is sensitive to sound, such as ohms, resistance and other ratings?

Thanks again and I am excited about building this project!
giladaya (author)  TomHammond2 years ago
I actually didn't spend too much time choosing the microphone, just assumed that a "spy mic" would be sensitive enough.
Even if your mic isn't super-sensitive, you can make a small sketch to measure the range of values you get from the mic and then map those to the range of values you want to apply to the system.

BTW - I found this cheap sound sensor on dealextreme a couple of days ago that looks interesting (didn't try it yet):
TomHammond2 years ago
Thanks much for taking the time to post this project! Assuming that I will using tracing paper as you have, may you post the distance between the LED and the diffuser? That will help me choose a correctly sized box and adjust standoffs as necessary.

giladaya (author)  TomHammond2 years ago
The distance from the LEDs to the diffuser is about 30mm and I used 15mm standoffs.
Ymmv depending on the specific LED matrix and type of tracing paper, so try experimenting with the distance to get the best results.
lclaiborne2 years ago
Can this be made bigger? Or in series? It's outside my Zone Of Competence, but I have a few places to put bigger areas of this light.
giladaya (author)  lclaiborne2 years ago
I see 2 potential problems with making a bigger display:
1) will the effect "work"? - in small scale, the effect manages to "fool the eyes", but I'm not sure it will hold with a larger size. I guess that the only way to know is to try and see.

2) limited processing power - if you use more pixels, you need more processing and memory, both for holding the particles data and the matrix status.
I can think of several ways to go around this limitation:

a) Going monochrome - the rainbowduino is driving 64 RGB pixels, which are actually 192 individual LEDs. So for example, you could drive a 16x12 pixels matrix with a single rainbowduino.
The makers of this board even have some PCBs that make it easier to work with custom matrices:
Note that you will need to modify the source code for this to work effectively.

b) Going parallel - rainbowduinos can be chained to form larger displays, but you will need a way to parallelise the animations and the processing, as it is one board with one processor per 8x8 matrix.
This will probably be easy to work out for some animations, difficult for others.
Potentially you can also do the processing on a more powerful system.

c) If you just want a bigger display (not more pixels), you can create a custom 8x8 matrix with the LEDs spaced farther apart, and the diffuser positioned farther from the matrix.
This can have the effect of making the pixels larger, but they may also be dimmer.
shichimi2 years ago
So nice and smooth animations.Thumbs up ! Can this animations be adapted to single color matrix and plain arduino ?
giladaya (author)  shichimi2 years ago
I believe so.
The particle system library is not device-specific. It generates an 8x8 matrix of RGB values, which is then applied to the actual LED matrix by external functions.
So as long as you have a function that sets a specific pixel in the LED matrix to a specific value, drawing a frame is trivial.

If you want to go deeper, the code can be optimized for a single-color matrix, as there is no need to store the hue of each particle and the calculations can be simpler.
This should free up some memory and cpu cycles, which can be used for more particles, multiple emitters, etc.
So if i want only red color i can simply call Colorduino.SetPixel(x, y, pMatrix.matrix[x][y].r,0,0) for each rgb pixel?
giladaya (author)  shichimi2 years ago
I just tried it, and indeed you get only red - but particles which are primarily blue or green are practically ignored and the effect is lost.
It works a little better if I disable the hue cycling in the emitter, fixing it on red.

However, this is not a good solution as:
1) the effect doesn't look as good and
2) a lot of memory is wasted on holding color values which never change

Therefore, I think that changes to the code are required to make it work well with a monochrome matrix.
1-40 of 57Next »