Friday, February 27, 2009

First Arduino shield boards arrived!

I designed an Arduino shield to provide a lot of outputs using very few pins on the Arduino... it uses 2 M5451 35 segment LED display driver chips.

Here's the board with all the parts soldered on.

Here is a angled view. On the front you can see a lot of pads. The idea was to allow the user to choose which Arduino pins should control the board by only bridging some of the gaps. However it turns out to be very difficult to solder tiny wires across these gaps.

Any ideas on how to do this better?

Here it is shown lighting up all the LEDs I happened to have lying around.

Here is the bottom view showing the Arduino connected.

A youtube video about it:


  1. Jumpers ?
    Would have the advantage of also being adjustable if your design changes (like mine often do)

  2. Thanks for your suggestion. But the problem with jumpers is that they are so big. I need to take any of 13 digital arduino pins and connect to 4 choices on my board (clock, Data 1, Data 2, and Brightness). So to do it with jumpers would require 4 13x2 headers which is a LOT of space and extra cost. Or maybe I am missing some "trick"?

  3. Instead of the tiny pads you have, how about through-hole pads that you could solder jumper wires into?

  4. Yes, that's a pretty good idea. Better than my pads for sure! What I really want though is something like a tiny rotary switch that you can turn with a screwdriver just like a tiny pot. But all I can find are rotary encoders, which output a binary number, not a single pole 14 throw switch.

  5. Could you use a DIP switch such as:
    This would provide a neat option and be better for people who may want to alter it often/aren't too great at soldering.

  6. Each arduino digital output would require 4 switches to select one of the CCShield's 4 inputs. The DIP has 8 switches, so the Arduino's 14 digital outputs would require 7 DIP chips! This wouldn't fit on the board, as well as being expensive. Unless you are thinking of a more clever way to map the signals to the DIP?

  7. With the video, you could have turned the video upside down on your software, whatever you use haha.

    Do they sell those chips in a SOIC form?

  8. @Chris, that video was shot in one sequence, unedited. The problem is that I'm using an Insignia HDDV camera that used a very poorly supported codec (but youtube did take it!); some players could do the video no audio, some the other, and some just hung. So I could not flip. But I'm not going for amazing cinematography anyway! Eventually I found the program "Any Video Converter". it can convert the files so I can (finally) edit my videos!

    I don't think SOIC, but they do have PLCC-44

  9. Thanks for the software Andrew. We used a heap of M5451 to run almost 5000 LEDs in a project a few years ago, so I had quite a few spare. About 3 months ago I started making an Arduino controller but got distracted by work. Now I am back on it, and very pleased to see your code, which has saved me heaps of time.

    What do you think about another run of boards. I was thinking of getting a few people together here in Melbourne too.


  10. Wow, that project sounds interesting! I'd be happy to do another run, and actually, I still have a couple of boards. Send me an email at g.andrew.stone at gmail dot com. Also, I have turned this code into a full Arduino library and open source project which is hosted at

    You should use that code instead of what is posted here in the blog.

  11. I would love to purchase some of these boards. You should sale this board on or propaganda pcb service. This board that you made would be handy for a lot of people like me.

  12. Hi Anonymous (and anyone else who wants to buy one),

    Send me an email a g.andrew.stone at gmail dot com and I'll sell you a few!

  13. Hi Andrew,

    I just got my ready-made Lightuino and I have a question, In the animation code you provide with it, you write

    int mySerDataPin = 5;
    int mySerDataPin2 = 2;

    Since I'm using the lightuino as a stand-alone microcontroller (and not as a shield). How do I know which pins will be used for these variables ?

    Also...maybe it's related but I can't seem to light up a led with it. I'm a total noob at this... although I have some experience with the arduino...

    This is how I connected it.
    one of the 70 pins from the lightuino is going to the + side of the led... and the - side of the led goes into the ground of the lightuino.
    What am I missing. Could you post a simple example of the connections? Thanks a lot!

  14. Please check out this FAQ, and also join our discussion group!

    But in sum:

    Yes your LEDs are not installed correctly. They should go from +5v TO the lightuino (the Lightuino acts as ground).

    The default pins are clk 6, data 5,7 brightness 10. That's what's on your board. Please "update" your code in SVN, I have changed the sketches to use this default.

  15. Thanks Andrew.
    I received my lightuino and played the default animation script that comes with it! It's awesome.
    I'll let you know what I do with it!