Note: I have fixed the confusion with some of the wiring in Steps 10 and Steps 17. A few of the diagrams (the illustrated breadboard) are incorrect, so please make sure to follow the schematics and as always, happy building!

Introducing the RainBoard: A simple RGB LED Rainbow fader using an Arduino Uno and a few simple components. Believe it or not, we will control 45-channels of RGB LEDs at 32 brightness levels using only 3 digital pins from the Arduino! How is this possible you ask? By using two magic concepts: Shift Registers, and Pulse-Width Modulation.  Some of the schematics/images may seem daunting, but if all instructions are followed carefully, it should be easy to have this set up and running in less than 30 minutes (perfect for those that forgot to get that special someone a Christmas present this year!).

This is my entry into the Make it Glow Contest. And also my very first Instructable, I hope you like it!

Here's the schematic and the diagram of what we will be making.

Here's a video:

Step 1: Parts

Before we begin, here is a parts list of everything we will need for this Instructable as well as links to vendors where these items can be obtained. When designing this circuit I made sure to select common components that can be found just about anywhere that sells electronic parts. I found all of the items here on eBay, but many of the standard on-line electronics distributors (Digikey, Mouser, SparkFun etc.) should have these items in stock. I linked to SparkFun parts to make ordering easier.

2x  RGB LED Strip - 30 LED/m 1m

We need these to make the pretty rainbow effect! One of the most crucial  components as you can't make it glow if you don't have something to emit light. We need two because each strip will be cut into 10 sections and we need 15 sections total for our project. This will give us 5 sections as spares in case something goes  wrong.

2x Break Away Headers - Straight

These are to make the RGB LED strips easy to plug straight into a standard breadboard. Those RGB LED strips need power and we're going to give it to 'em! We will be soldering these onto the RGB LED strips, and each strip has 4 connections. Since we will be making 15 of these sections, we need 60 pins total, and each purchase comes with 40 pins. This will give us 20 spare pins in case we break them in the wrong spot.

6-8x 74HC595 8-Bit Shift Registers

These are the meat and potatos of the project. In order to make such a large amount  of wires connect to the Arduino, we need these shift registers to pass the information along to the RGB LED Strips. We only need six Shift Registers to make this work, but I always like to order extra.  That way, in case something happens to one or two of them, we still have the parts to complete the project. Just make sure to be careful if you only order six.

6-8x ULN2803 DIP 8-Channel Darington Driver

These are one of my favorite electronic components. I'm sure lots of you are familiar with a standard NPN Transistor. The beauty of these is that they are comprised of 8 transistors built in but all of them have a common emitter. This makes them a great item to sink lots of high current (up to 50v @ 500ma!) LEDs that share a common anode. These will be the muscle of our project. Again, we only need six of these, but as all of us know, good ol' Murphy's Law can play a part in any project. It's good to have backups.

2x Basic Breadboard

Any electronics project needs a breadboard. If you don't have any of these, I would suggest buying some even if you don't complete this project. Even for the simplest of circuits these things are worlds easier to use than alligator clips. We need two because we are going to be pulling the rails off of one side on both of the breadboards. This will let us move them closer to each other, giving us 3 channels to work with.

1x Arduino Uno (or other similar model)

Ahhh, the Arduino, how I love thee. I could write a tome about how much I love this  thing. I could write poems, love letters, Haiku's, and songs about this simple yet glorious device. This Instructable is long enough as is, so I will spare you all the
weirdnesss. We only need one of these as long as we are super careful with it. Be gentle to it and  it will love you almost as much as you love it.

1x 12VDC Wall Adapter Power Supply

We need to power this puppy and something like this should do. I use a prototyping power supply (Around $200) so not everyone has access to one. One of these will  work just fine as long as it's 12VDC, it's regulated, and has a 2.1mm center-positive barrel jack.

1x  Any way to connect things together.

My personal favorite are simple jumper wires. I always seem to run out of these so order a  few of them if you can. If not, simple 22  gauge solid-core wire and some wire-strippers will work like a charm (and much cheaper). I tend to use the jumper  wires for straight and short connections and use 22 gauge wire to for the long, awkward connections. This will keep things nice and neat.

1x  Soldering Iron

Any soldering iron will do, pick something around 30w if you can.

1x Third Hand (optional)

This isn't required, but will definitely help in step four!

Enough shopping, let's get to building!
<p>Awesome! Finally done, although I had some problems with a &quot;collect 2 error ID(...)&quot; but realized I downloaded the wrong library XD. Where can I learn more about this code and how it works precisely? Thank you so much :3</p>
friend i am also getting same error help me......<br>my error is collect2.exe exit status 1.?
<p>hey I'm having the same problem - did you ever figure this out?</p>
<p>I turned mine into a rainbow poptart cat. This was fun!!</p>
good job 74HC595
<p>The schematic answers a few doubts I've had about how to daisy chain multiple 74HC595 shift registers - thanks for that.</p><p>I first thought you hadn't included schematics, but you did. Schematics are VERY important for documentation purposes, and their use needs to be encouraged.</p><p>The only slight problem is that the 74HC595 and ULN2803 are shown inverted with respect to each other in the schematic. It makes the schematic harder to read, but that might be just me.</p>
Thanks alot I realy learnt alot<br>but do you know any tutorials about shift registers coding I want to learn it<br>thanks
<p>Hi! I couldn't find </p><p>Link to ShiftPWM: http://code.google.com/p/shiftpwm/downloads/detail?name=ShiftPWM_v1_03.zip<br> Link to RainBoard Code: http://code.google.com/p/rainboard/downloads/list</p><p>plz help me....</p>
<p>Can TPIC6C595 drivers be used instead of the 74HC595/ULN2803 combination in this setup?</p>
If the Darlington drivers can handle 500ma each, and the 3 RGB LEDs on each channel are only drawing 60ma together, would it be possible to use 6-LED strips (120ma) or even half a strip (15/3 * 60ma = 300ma)? Or is there some other limiting factor? <br> <br>Maybe it's 60ma x 3 colors per LED = 180ma. But even then I should be able to use 6 LED lengths.
Sorry, I can't match up the diagram and the text. According to the text, both register pins 12 and 14 are connected to Arduino pin 8. According to the picture, register pin 12 is connected to Arduino pin 8 register pin 14 is connected to Arduino pin 11. <br> <br>Am I reading it wrong? If not, which is right?
can i used an ordinary &quot;LED&quot; instead the RGB led strip.?? Because RGB led is not available in my place... <br>
i love futurama
I want to ask the same?
cool! is it possible to sync them to music and use them to build a mini dance floor? and add random colours etc etc? im not familiar with coding but i have a few frnds who could help me if im able to explain to them clearly...
In the &quot;INTRO:RainBoard&quot; the schematic to show there&acute;s power 12v in the leds together with the pin 10 uln2803. is it correct ? <br> <br>The ULN2803 don&acute;t need power in Pin 10 ???
can I make it fade more slowly? rather than have it change so fast, I'd want one color to be displayed for a longer period of time and then slowly fade to the next.<br><br>haven't checked the code yet, but I figure I'd just have to change some delay times ?
I am getting errors with CShiftPWM.cpp file while compiling. any suggestions ? <br>
This is an excellent instructable! I love your analogy for the shift registers too. I'm waiting on some parts so i can implement this into a solar powered, recycled bottle light fitting. Thanks for the instructable!
This looks so interresting , I would like to study the code ...The RainBoard file doesn't have a pde file as it is an ino ? Just wondering if I am missing something ? <br>Thanks for the share, you did an awesome job ! <br>Build_it_Bob
After Arduino IDE 1.0's release, sketches are now saved in the *.ino format, with previous versions saving in the *.ide format. I'm not sure if the *.ino format will work with previous versions of the Arduino IDE, but download the latest version and it should upload to the Arduino with no problems. If you have any questions or run into any road blocks, feel free to post a comment here and I will glad to help you out! ^^
Is there some code to try this out? Can someone tell me how to setup spi in Arduino with the 74C595? setBitOrder lsb or msb. setClkDividers and setDataMode<br>Thanks<br>Don
Nice )
Hi otbpaintball, <br> <br>Thanks for posting this project. This is just too kool! :0)
Awesome project!
Perfect! This instructable has all the basic information I have been looking for to run multiple LEDS on the Arduino Uno I just received for Christmas! Thank you!
I'm so glad you like it! If you want to learn more about Shift Registers and the Arduino, be sure to check out the ShiftOut tutorial on the Arduino's main site: http://www.arduino.cc/en/Tutorial/ShiftOut. Good luck on your future projects and have fun with your new Arduino!

About This Instructable



More by otbpaintball:Samsung Gear VR - Head-mounted Cable Management RainBoard - RGB LED Rainbow Fader 
Add instructable to: