Tuesday, October 6, 2009

Lightuino Design Thoughts

From references

In designing the Lightuino I wanted to improve on my existing CCShield in several ways and provide an alternative to the Rainbowduino (which is also an Arduino compatible LED display board).

New Features!

NOT (necessarily) a shield!

The biggest change is the addition of the ATMEGA CPU, clock, etc logic, making the Lightuino a standalone board!

Of course, you can still use it as a shield, either WITH the ATMEGA populated or WITHOUT (if the ATMEGA is not populated, it MUST be used as a shield of course). And you can stack them. If it is stacked, it ought to let you do some really interesting distributed computing stuff.

By integrating the ATMEGA on-board, the total cost is a lot less, since you don't need the Arduino board. And its a lot smaller too!

Separate LED power Regulator

An LM317T was added to the board, with a 10k adjustable POT, so you can deliver consistent power to the LEDs (or to whatever) even if your wall-wart is unregulated. As long as your wall-wart provides the voltage, you can go up to 30+ volts, allowing each CCShield sink to control a string of LEDs. However the M5451 chips can only handle a 13 volt differential, so you must make sure that the voltage has dropped down to this before it enters the chip.

IDE cable headers

If you are stacking Lightuinos, the IDE cable header does not quite fit in a stack, so right angle headers are available.

The IDE cable pinout was also changed to put all of the power lines on one end, and to NOT provide a ground line unless a jumper is inserted on the board. Additionally, the pinout is the same on both sides (instead of upside down). This makes it a lot easier to wire up the LEDs AND also makes it very difficult to accidently burn out a LED by wiring it up to ground (for example) instead of to a current sink.

Finally, one of the lines is unassigned, and accessible via a pin on the board. So you can push whatever signal out that you want!

Pin Selection

Just like the CCShield, you can select whatever Arduino (digital) pins you want to control the LED portion of the board. But the CCShield's pin selection was difficult as it used extremely small SMT pads. The Lightuino simply has a section of the board with some thru-holes and you use jumper wires to make the selection.

Brightness Adjustment

It turns out that the M5451 chips can drive the LEDs at a barely discernible difference in brightness, so trim pots were added to the brightness adjustment to allow you to make the chips output the exact same light intensity (or actually, you could make one chip output bright, and one dim). Of course, this can be simply populated with resistors to save $ if exact brightness levels are not needed. It is unlikely that these will be needed for casual use.


The ATMEGA 328 QFN package has 2 additional analog inputs, so I brought those out by simply extending the Arduino standard pinout.

Also, I had extra space so I threw in the footprint of a voltage divider per analog input pin since that is a very common circuit. Just add your own resistors, and you are all set!

Comparison with Rainbowduino


Let me start by saying that I don't have a Rainbowduino, so this is all conjecture from reading the specs. It seems to me that it was mostly focused on driving an RGB 8x8 LED matrix display. In fact you can even plug a matrix directly into it. I was more interested in driving individually placed LEDs for art projects. While LED matrices are cool and have their uses in signage, frankly, if I wanted a big screen I'd just buy a flat screen TV! But whatever floats your boat. :-)

Of course, you can always use a LED matrix electrical connection, but not have the LEDs in a grid, but it is trickier to do that wiring... additionally you can use the Lightuino to "sink" the columns of an matrix (70 columns instead of just 24!)... but you would need to power the rows with some other circuitry. So again, its trickier :-).

Shield Compatiblitity

Additionally, the Rainbowduino does not seem to be Arduino shield compatible. This seemed to me to be a major drawback as it does not take advantage of the vast community of shields out there that can add so many cool features to a project!

CPU Power

The ATMEGA 168 is pretty limited in RAM, as I found when working with the normal Arduino, so I moved up to the 328 with double the RAM.

LED Capability

I opted for 2 chips that can drive 70 constant currents outputs at 20mA, the Rainbowduino allows you to drive fewer outputs (24) at higher capacity (120mA).

PWM Dimming

I wanted to experiment with POV art (i.e. a light strip that forms an image floating in space when your eyes flick by it, or spinning a strip to form in image in a circle) and to do that you need precise control of when the LEDs are ON vs OFF. In other words, a separate PWM chip won't work. However, this means that the Lightuino has to drive PWM in software, just like what the Arduino's PWM pins do. At very low PWM levels (say 10 on out of 256 counts) you can perceive the LED blinking (and of course more Arduino processor time is used). Therefore, you end up with another tradeoff, precise control over the blinking of each LED verses faster blink rates (note, I'm just assuming the Rainbowduino has an external PWM, but I haven't verified that).


  1. Good job! I've been looking at Rainbowduino for my own project where I need to control multiple LEDs individually. I think this fits my requirements better.

    Is the board/kit/package going to be available from somewhere?

  2. Sure! I've already sold a bunch. Send me an email at g dot andrew dot stone at gmail dot com!

  3. Andrew:

    I'm interested in your project, where to buy one? I send you an email but no aswer.

    erick.nava at the same.

  4. please let me know where i can buy one & how much

  5. Also interested in buying some; email at discomarc@gmail.com

  6. Looks very cool. What if i wanted to triple the output to 210 Directly addressed LEDs. Can you contact me on Board availability ijh[at]ianhobbs.net

    Cheers IAn

  7. Instead of LEDs... could the 70 pins be connected to
    70 SSRs?

    I am looking at using a mega 2560 with it's 54 io pins to
    drive 48 SSRs. I am not sure if I do that.. if I'll have
    enough io pins left to talk to a ethernet shield. I might
    have to do 32 ssrs per megs 2560 board.

    If this will let my do 70 SSRs on a mega 2560 AND give
    me access to the ethernet shield too... that will be

    Let me know if driving ssrs would be possible with this and how much one of your boards would cost.

    Thanks - jack