HL1606 DLW

Pacman's Revenge!The Digital Light Wand
UPDATED May 1st, 2013

ATTENTION! I have now created a Blog Page specifically for the Digital Light Wand – LPD8806 version that is0-mick designed using an SD card reader and LCD Display Shield.

This new page has a video and detailed wiring diagram for the LPD8806 version of the Digital Light Wand and also some specific information regarding the formatting and use of BMP files.

The Page is located through the menu at the top of this page or via this link.


Please post questions and comments regarding that version of the light wand to that page.


I have gathered the links below to all of Mick’s fantastic work with incorporating an SD Card and LCD Display into the mix to make the wand independent of the Code Generation! Simply load BMP Images to the SD Card, select the image on the LCD display and GO!
Thanks Mick for your support of the Digital Light Wand AND this blog! See the updates below.

This blog page is dedicated to the Tutorial for the Digital Light Wand. Questions, problems, improvements, or anything else related to the Digital Light Wand should be posted on this blog page.

The DIGITAL LIGHT WAND is now available pre-assembled along with other great light painting tools on www.LightPaintingTools.com!!!!

What IS the Digital Light Wand? It is a programmable RGB LED Tool that is used in Light Painting Photography to create just about any object that you can think of for a light painting photo.
Here are links to some videos of the Digital Light wand in action!
Radio Shack Great Create Vid
A video showing the basics of how it works and in action as well
Here are the links to file downloads and know vendors for the HL1606 Light Strip and Arduino board.

1) The Detailed PDF Tutorial (WARNING! VERY LARGE! ~30MB!) DigitalLightWandTutorial.pdf
2) The Arduino Website to download the Arduino Software
3) For some computers, it has been necessary to instal the latest VCP (Virtual COM Port) drivers. Those can be found on the FTDI website HERE.
4) The Library files needed to communicate with the HL1606 RGB LED Strip (They are included in a folder in Phil’s Lightwand Code Generator below as well and it is best to use the ones he provides
5) Phil’s Digital Light Wand Code Generator: (located in the download area of his website at http://www.wright-online.com
6) The Spreadsheet to draw the image and generate the code for all lengths of the light strip (16 LED through 64 LED versions) for the Arduino (I recommend using Phil’s program instead!)
7) The 48 LED Spreadsheet to draw the image and generate the code for the Arduino (Old Version)

HERE are the updates and links with all of Mick’s info for incorporating the SD Card Reader and LCD Display into the Digital Light Wand.

Note: This build totally takes the place of having to use a rotary Switch on the 16 LED Light Wand and gives the longer versions MUCH more flexibility. This is also using the LPD8806 Light Strip which has a MUCH larger color range than the HL1606 strip does! I have not personally done this yet but I will be trying to get one made and will take some pic and create wiring diagrams along the way. Stay tuned! :-)

1) Here is a YouTube video of the Digital Light Wand in action with the SD Card Reader and LCD Screen.
2) Here is an example photo
3) Here is the latest Arduino Code to make it do it’s magic!
4) Here is the Arduino Library files to drive the LPD8806 Light Strip
5) And here are some example LSB Files


The DIGITAL LIGHT WAND Tutorial is now complete!!!


(aka The Programmable Light Strip)

Alright Everyone! After some long hard hours creating a VERY detailed document on how to do this (and creating a How To Video as well!), here it is, as promised! Many have asked me how this was done over the past few years and I quite honestly did not have the time to spend with many individuals in explaining how it was done or supporting any problems that might have come up with others trying to follow a quick how to lesson so I was hesitant about getting any information to anyone. Now… With the Help of Blacklodge and Garnatha as my test subjects and getting valuable questions and feedback from them during the process, I have now completed the tutorial to a point where it is ready to show everyone how it is done.

Here is a VERY LARGE (~30MB!) PDF document that details everything including High Res photos to show the details as well.

Other Files and Reference Links:
1) The 48 LED Spreadsheet to draw the image and generate the code for the Arduino (See below for newest version)
2) The Arduino Website to download the Arduino Software
3) The Library files needed to communicate with the HL1606 RGB LED Strip

*** Here is a the Latest Excel Spreadsheet! It will work with any length of the HL1606 light strip between 16 and 64 LEDs! Please read the HELP section since this will differ a lot from how the use of the Excel Sheet is explained in the written tutorial

The DIGITAL LIGHT WAND is now available pre-assembled along with other great light painting tools on www.LightPaintingTools.com!!!!

And here are videos of showing the assembly of the 16 LED – 6 program version of the DLW!

Part 1

Part 2

Part 3

Part 4

ENJOY!!! And please let me know what you think about it all! :-)


Post Comments below  (Comments are listed most recent first)



  1. John Brzoza August 23, 2015 at 9:21 pm #

    I loved reading this Blog well written and gave me alot of info and some Idea’s

  2. Felicia November 28, 2014 at 1:53 am #

    Hence, it is not difficult to afford shopping for the program by spending few dollars.

  3. smc barricade router November 8, 2014 at 12:38 pm #

    Really when someone doesn’t be aware of afterward its
    up to other people that they will assist, so here it takes place.

  4. google api tutorial March 8, 2014 at 2:13 pm #

    Howdy! I know this is kinda off topic nevertheless I’d figured
    I’d ask. Would you be interested in exchanging links or
    maybe guest authoring a blog post or vice-versa?
    My blog addresses a lot of the same topics as yours and I believe we could
    greatly benefit from each other. If you are interested
    feel free to shoot me an email. I look forward to hearing from you!
    Awesome blog by the way!

  5. Vass February 27, 2014 at 3:19 pm #

    Actually Mick, I think I got it from your video comments thanks


  6. Vass February 27, 2014 at 3:13 pm #

    Can someone point me to the simple wiring diagram for the HL1606 with SD card wired to the Arduino please

    Mine has come apart and I have no idea how to plug it all back together (this time I will solder it)

    Not the schematic please I dont understand that. Just the Pin x to Pin Y etc

    thanks muchly :-)

  7. NedTaccse February 11, 2014 at 3:25 pm #

    The generated code, this sentence is wrong: int r = (((this_led_color >> 16) & ff) >> 1) | 0x80);
    Somebody help me! (error message: “ff” was not Declared In This Scope)

    • is0-mick February 14, 2014 at 1:08 pm #

      Where is this code from?
      I’d say 0xFF instead of the ff, as it looks wrong…

      What setup are you using?
      as I did a version with LCD sceen and SD card for the HL1606 too..
      see post further down @ January 22, 2013 at 4:54 am by is0-mick


  8. bad credit July 31, 2013 at 7:53 am #

    It’s an amazing post for all the internet users; they will obtain advantage from it I am sure.

  9. offres d emploi July 11, 2013 at 6:45 pm #

    Hi there i am kavin, its my first occasion to commenting anyplace, when i read this post i thought
    i could also make comment due to this sensible article.

  10. pain management June 6, 2013 at 8:29 pm #

    Getting the right amount of exercise is helpful and can be done with something as simple as taking a walk.

    So rather than hoping that you will find a single exercise that
    will fix all your problems, you must understand that to remove these issues you must use a combination of
    back pain exercises. Sportsmen and women are known to have
    great peripheral vision so try being aware of
    what’s to the sides of you.

  11. Marc June 4, 2013 at 12:31 pm #

    First of all, I want to thank you for your brilliant work!
    I’ve bought quite everything I need to. Can I use a arduino compatible board instead (for example the Funduino MEGA2560)?
    Is your (or phil’s) program compatible to a mac too (there is a arduino software for mac)?
    Which one of Phils program do I have to download (you recommend Phil’s)

    Thanks for your answer.
    Best wishes from Switzerland

  12. Michael Ross
    Michael Ross May 1, 2013 at 9:38 pm #

    ATTENTION! I have now created a Blog Page specifically for the Digital Light Wand – LPD8806 version that is0-mick designed using an SD card reader and LCD Display Shield.

    This new page has a video and detailed wiring diagram for the LPD8806 version of the Digital Light Wand and also some specific information regarding the formatting and use of BMP files.

    The Page is located through the menu at the top of this page or via this link.


    Please post questions and comments regarding that version of the light wand to that page.


    • Martin May 2, 2013 at 2:05 am #

      Dear Michael! Thanks a lot for that great work! This makes it really easy to understand how to put together the stuff! I will order everything I need right now. Thanks you so much!

  13. Michael Ross
    Michael Ross April 30, 2013 at 12:25 pm #

    “This afternoon I am going to do a little Spring Cleaning” and attempt to split the information out for the HL1606 Strip DLW and the LPD8806 Strip into two pages. So basically I will be starting a new page for the LPD8806 DLW that Mick designed and leave this page for the original HL1606 Strip. That may help eliminate some confusion. I am not sure if I will be able to migrate the comments related to the LPD8806 strip to the new page but I will at least make sure the relevant information is on the new page.

  14. Michael Ross
    Michael Ross April 30, 2013 at 11:21 am #

    I am going to try to get one finished with Mick’s design and get some details posted in the next few days.

    There have been some questions about the number of LED’s that can be driven and the answer is different depending on the strip you are using. The real question is how many LED’s can the 5v power supply on the Arduino board handle before you either wipe it out or have to us an external power supply to supply more current.

    The HL1606 strip uses about 2 amps per meter and that is MUCH more than the Arduino boards are rated! Which, from what I understand, is 800mA (milliamps!) or .8 Amps! So then the question arises as to why all of these setups do not fry the Arduino boards? The answer is basically that first off, that 2 Amps comes from every LED being on at full brightness. And when I mean every LED, I mean each of the R, G, and B so that you are seeing bright white in the color mix. This is not going to happen much if at all. On top of that, it is also unlikely that you will have ALL the LED’s on at the same time. And then one more on top of that, the LED’s are only on for a fraction of a second for each time pulse so things really do not have much time to heat up in the electronics. If all of that makes sense!? I have driven 64 LED’s on an HL1606 strip using the power on the Arduino

    So then we move to the LP8806 Strip. It does things differently and MUCH more efficiently. I have seen others post results showing that a full 5 meter strip (32 LED per meter) of the LPD8806 strip only pulls 1.2 Amps! So… Even though that is still above what the rating is for the Arduino, you also have the time, number of LEDs and brightness that come into play. Technically, you are already over the limits of the Arduino when you get to .8 Amps. BUT, you can push it a bit. How far? There is really no way to tell or calculate it that I know of. I can tell you that I have tested 64 LEDs on the HL1606 strip, but if you go with more than that, you are on your own! :-)

  15. andre April 30, 2013 at 7:17 am #

    Hi Martin
    If I were you I would buy the 52 led strip. It has more leds and so will have better resolution.
    Also the code is ready to use (done by Mick).
    If you want I can send u a file stating how to wire and how to prepare the inages for the sd card.

  16. is0-mick April 29, 2013 at 4:34 pm #

    Hi Martin,
    SD reader (ebay ) item number 290621132853

    LCD Display / Keypad (ebay) item number 200720143717

    The strip wires up to GND / +5v and the two pins as defined in the code.

    The SD reader connects to the default arduino mega 2560 SPI pins.

    Hope that helps!


    • Martin April 30, 2013 at 1:22 am #

      Thanks a lot Nick! Just some more question. Will it be possible to drive more than 48 LEDs? I am about to order everything, but I am not shure if I am right with the LED stripe itself, is this one okay: 150932028240? Thank you so much! Martin

      • Martin May 2, 2013 at 1:54 am #

        Hello Mick (not Nick, yes, a typo, sorry),

        Thanks for your reply! I am just about to order the stuff and thanks to the work of Michael I am hoping to solder it together the right way.

        Thanks a lot!

    • is0-mick April 30, 2013 at 5:34 am #

      may be a typo?
      Yes that stip 150932028240 is fine.
      And I’ve driven 104 LED’s (2m x LPD8806), so has Cazzo3,
      Here is a link to his pics of his wand.

      Not sure where people get the 48? from, you can just change it in my code to whatever size you want, but you may also need to increase the power supply or make your own seperate 5v supply to power them depending on how many you want to run.

      More LED’s = More power required!

      I’ve powered 104 direct from the arduino, but do so at your own risk :)


      • Michael Ross
        Michael Ross April 30, 2013 at 2:30 pm #

        I think the 48 came from the original HL1606 DLW Build. I am in the process of splitting these tutorials and creating a new one base on your (Mick’s) design to help eliminate some of this confusion. I will move some of these comments over there as well.

  17. Martin April 29, 2013 at 9:19 am #

    Hello, I would like to build a ldp8806-based strip too. Please could someone point me to a hardware-list of what to buy. I know how to program Arduinos and I know how to solder together the stuff.

    Thanks a lot! Martin…

    • is0-mick April 30, 2013 at 2:22 pm #

      Hi Jordan,
      The LCD / Keypad is fine, the SD reader is not compatible.
      You want to get one with the voltage converter etc built in, as SD cards are 3.3v and the Arduino is using 5v.

      You can pick them up on ebay for 99p from hong kong / china.
      Just search on ebay for arduino sd reader and you should find some.

      Nothing else is needed, unless you want to add a couple of external switches to trigger the “show” or move back / forward instead of searching for the buttons on the keypad in the dark, or triggering the show :)


      • Michael Ross
        Michael Ross April 30, 2013 at 2:28 pm #

        Mick, there is a 3.3 volt pin on the Arduino that could be used for those SD card readers that don’t have the 5v to 3.3 regulator on them. Wouln’t you think that would work?

        Edit… Ahhh! Nevermind! The connections on that breakout board are more complicated to deal with. It would definitely be best to deal with an SD card board that is a little more friendly. :-)

        • is0-mick April 30, 2013 at 2:34 pm #

          Yes, that would work for the power, however I think the signals such as SDA, SCK, etc would still be at 5v . On the SD card they need to be 3.3v signals.

          The SD reader I used had resistors built on the board to drop all of the signals to the required level.


          $1.48 in your money :)

          By the way, if you need any help with anything, just give me a shout.


          • Michael Ross
            Michael Ross April 30, 2013 at 2:37 pm #

            After looking at that board more, I agree. It would be easier to use one that is ready for use. :-)

          • Michael Ross
            Michael Ross April 30, 2013 at 2:40 pm #

            And thank you! I have the supplies sitting in front of me to build one and I am taking pics as I go. I will get all of this information put in a PDF file hopefully tonight and have it all published. I have already started moving the information to a new page to break out the LPD8806 strip to a new blog. I will shout if I run into any snags. Thanks again for everything you do here! :-)

  18. Jordan April 23, 2013 at 2:46 pm #

    Couple questions for Mick,
    Thank you very much for working out the LCD screen and SD card reader! I am sourcing the components as we speak to build this tool. Could you tell me what components (model number and manufacturer) you used for your own digital light wand?
    I’m assuming this SD card reader will work:
    As for the LCD screen, do I search for a 3.3v or 5v 16×2?
    And, are you using a LCD keypad shield like this one?:
    I already have an Arduino Mega 2560. Do I need any other major component other than a 2 meter strip of LPD8806 LED’s)?
    Thanks for your assistance!

    • is0-mick April 30, 2013 at 2:24 pm #

      Oops, I think I replied to the message above, instead of this one. (please read reply above).


  19. Andre April 23, 2013 at 6:04 am #

    Hi Mick (is0-mick)
    I finally got around to build the digital light wand with the lpd8806. Many thanks for the code you built. I still didn’t try the dual strip version…
    I was thinking of trying to built Michael’s Programmable RGB LED Orb.
    I would be happy to send you a string of the ws2801 LEDs.
    What do you say?

  20. is0-mick April 13, 2013 at 2:02 pm #

    I dont have any WS2801 strip to test with, so I have not created a version for your strip :(

    The only versions I have made so far are for the LPD8806 and the HL1606 as I have these strips..


  21. Alex April 13, 2013 at 1:00 pm #

    Hi all.
    Can someone please tell me what are the correct files to use WS2801 with LCD keypad and SD card reader?
    Thank you

  22. vinifr March 16, 2013 at 3:51 pm #

    hi is0mick, can you pass me your email?

  23. Vass February 14, 2013 at 3:43 am #

    I am (both LCD and SD)
    this goes back to my post
    September 28, 2012 at 4:43

    If there is a definative set of files to use now and to save me trawing through the blog, can you point me in the right direction to get 64LED’s to work Mick?
    many thanks

  24. is0-mick February 13, 2013 at 8:00 pm #

    Oh right,
    I thought you were using my code with the LCD and SD..

    Not sure about phils program, Maybe you should try adding the LCD and SD card to your wand? then you can just drop BMP’s directly onto the sd card, no more converting..
    And I’ve tried it with 108 led’s on the LPD8806 strip no problem..


  25. Vass February 13, 2013 at 7:44 am #

    To be honest, I just tried setting the No of LED’s in the DLP program where you upload the image and it saves to the SD card

    but this was failing when set at 64, but works at 48.

    maybe there is a simple answer I missed
    thaks Mick.

  26. is0-mick February 13, 2013 at 6:31 am #

    Did you change the size here?
    #define STRIP_LENGTH 48

    to 64?

    Then reprogram the arduino?

  27. Vass February 13, 2013 at 4:30 am #

    Hi Mick

    did anyone ever try to extend the 48 LED limit on the 1606 to 64 LED’s ?

    I’m getting a repeat of the image on the extra LED’s on my wand LOL

  28. Andre February 9, 2013 at 6:54 pm #

    Hi Everyone.
    Im selling my digital light wand on ebay in case someone is interested.

  29. is0-mick January 22, 2013 at 4:54 am #

    Hi Michael,
    the LSB files are no longer needed, we can just drop normal images (BMP’s directly to the SD now).
    The link to the code actually takes you to the picture instead.

    Also I’ve done two versions of code for different strips..
    HL1606 + LCD + SD http://pastebin.com/sQ0VimzM
    LPD8806 + LCD + SD http://pastebin.com/NbgLWdNF

    Kind Regards

  30. Michael Ross
    Michael Ross January 21, 2013 at 11:23 pm #


    I have made some updates in the text at the top of the blog with links to your code and examples. Please let me know if you see any errors or if I have missed something.


  31. is0-mick January 21, 2013 at 7:58 pm #

    Everything you’ll need is in the comments below, as well as links to the source code.

    Not sure what stips you are using, but I’ve made code for the LPD8806 and the HL1606.
    The LPD8806 is the better strip out of the two.
    The 2×16 display button shield is from ebay, and is very cheap, df robot i think was the one i used..

    Just put in ebay arduino lcd button keypad, and it should pop up.
    That just plugs in. Then the SD card just wires onto the SPI pins of the arduino, I’ve given them further down in the comments.

    If you get stuck give me a shout :)


  32. Steve Blackbourn January 21, 2013 at 6:59 pm #

    Thanks for your help guys – the timeline is a bit disjointed (I am in Queensland Australia) but your assistance is timeless!

    I would like to see a schematic and further info on the SD card and 2 x 16 display? as well as some construction details, latest code etc. Is there a consolidated site or is it piecemeal in the blog below? I would love to see the combined efforts of your work resulting in the ‘Ultimate Digital Light Wand”…

  33. is0-mick January 21, 2013 at 5:17 pm #

    have a look at the posts below here..

    has a video of it


  34. Steve Blackbourn January 21, 2013 at 4:51 pm #

    Sounds interesting as well is0-mick – where is the info on your version?

    (I still can’t believe that a mac person has not built the digital light wand and solved the windows only problem! We are now a large proportion of the photographers/gadget people out there!)

  35. is0-mick January 21, 2013 at 3:37 pm #

    Not sure if there’s a windows emulator program for the mac? Like WinE for linux?

    Only other thing I can suggest is that you have a look at building my version of the light wand that uses the LCD display and an SD card, then you dont need any software as it reads bmp files directly from the sd, and you can choose the image on the LCD screen…


  36. Steve Blackbourn January 21, 2013 at 2:37 pm #

    Really enjoying your journey with light and can appreciate how many hats you wear… Have followed this blog and bought your e-book – fantastic information. Have built several light tools but cannot finish the digital light wand without the excel spreadsheet and code generator for the Apple Mac. Have downloaded Phil Wright’s files etc and cannot get anything to run on a mac as they all seem to be for Windows only. Can anyone who has been down this path help someone from down under?

    • Michael Ross
      Michael Ross January 21, 2013 at 5:39 pm #

      Thanks Steve!
      Unfortunately, no one has ventured in the Mac arena to create a code generator that will work. I know there are ways to run dual Operating systems on a Mac (Mac and Windows) but I have never owned a Mac and wouldn’t know where to tell you to start on that one. Or like Mick said, there may be an emulator to run Windows programs in a Mac OS also.

      But to get you started and make sure your wand is operating properly, if you send me an image that you would like to generate the code for (or a few of them), I can generate the code for you, send it back in emails that you can then copy and paste into the Mac Arduino window to download it to the Arduino board. My email address is MichaelRRoss AT Verizon DOT net (replace the AT and DOT with the proper email syntax 😉 ).

      I have thought there might be a possibility down the road to maybe just create a web page to upload an image to and then generate the code for copy and pasting into the Arduino Window and that would cure the problem of it being a Windows only thing but I haven’t had time to look into it yet.

    • is0-mick January 21, 2013 at 6:34 pm #

      Hi Michael, hope you are well!

      Its an interesting idea, but there are still quite a few limitations with the above, and having to copy + paste code and reprogram the arduino every time was a little crazy I thought!
      Then you are also limited to only 6 or so small images with the above method.

      With the improvements I’ve made there is now virtually no limit on image size, ive tried one at 10,000 pixels long just to see if it worked, it did take quite a while to finish spitting out the pattern!

      Also you can store loads of images on the SD card, and it is not OS dependant, as linux, mac and windows all support BMP files..

      That’s my take on it anyways..


      • Michael Ross
        Michael Ross January 21, 2013 at 6:39 pm #

        Thanks Mick!
        Yes sir! I totally agree! Your method using the SD card and LCD display is definitely the best way to go! I think Phil was playing with a way to do it all via bluetooth as well and that was an intriguing option! I have just been thinking of other options for those that went the lower tech route. I would definitely recommend going the SD care/LCD route though!

        Thanks for your support on this blog! I greatly appreciate it! :-)

        Let the light shine!
        Mike :-)

  37. Carlos Magno January 4, 2013 at 11:52 am #


    I wish I knew how to do to buy your product.
    A friend of mine is in Boston .. I would buy it for me!
    Thank you!

  38. Randy December 28, 2012 at 2:26 am #

    I just like the valuable information you provide for your articles.
    I’ll bookmark your blog and check again right here frequently. I’m reasonably sure I will be told plenty of new stuff proper right here!

    Good luck for the next!

  39. is0-mick December 15, 2012 at 11:19 am #

    I think you are looking at a different schematic. No 74LS08 in my version.

    In my version just wire up the strip to the pins defined in the code, and the SD card goes also on the pins defined in the code.

    Here is the latest version of the code, which also supports dual strips.

    You will need to change the strip length to match your strip, and set dual strips to false, if you are only using one strip.



    • leo December 15, 2012 at 9:04 pm #

      hi is0-mick ,
      i’m so sorry ^^’,
      in your code i only see this 3 pin
      ” SDssPin53 <–SD card CS pin"
      "dataPin = 3;<–LPD8806 strip "
      "clockPin = 32<–LPD8806 strip"
      SD card MOSI pin,SD card sck pin,
      SD card Miso pin,i can't find
      ,could you mind tell me the Schematic of pin ?

    • is0-mick December 18, 2012 at 3:34 pm #

      Hi Leo,
      The SD card reader just goes to the standard SPI pins on the Arduino.
      pins 50,51,52and 53..

      LPD strip goes to pins 31 data , 32 clock.
      Also GND and +5v (These are marked on the arduino).

      Thats pretty much it for the wiring!

      You can also add a switch betweens pins 44 and 45 to use as a “send button” instead of using the one on the LCD shield.


  40. leo December 15, 2012 at 11:12 am #

    Dear is0-mick
    I have a new LEDSTRIP(LPD8806),
    i see the “LED Light Wand with SD Card Schematic . pdf”,i don’t understand the part of ” 74LS08N”,is it use in schematic or not?

  41. is0-mick November 29, 2012 at 4:12 am #

    I’ve just created some code with phi’s program to see what you have.

    So give this a try!
    Create some code, using phils program.
    Save it to the file.
    Open it in notepad or a text editor

    Find the line thats below “Void Post_Frame(Void)” in the code that phils program generated.
    Look the line:
    WriteRGB(r,g,b, clkPin1,spiPin1);
    it may be slightly different to that if you are not using hardware SPI.
    But change the first part so you are swapping the letters B and G over.
    Like so.
    WriteRGB(r,b,g, clkPin1,spiPin1);

    Then upload this code to your arduino.


    • Gareth B December 1, 2012 at 5:04 pm #

      Hi Mick,

      Sorry for not getting back to you. I found this out the other night and strangely you’ve said virtually the same thing is I’ve found out! :)

      I tinkered with the code the other day after finding line where it’s writing the colour order.

      For those with the same problem, I have changed the code in the Arduino script to the following :)

      just swap the b and g around!

      Cheers Mick for helping as well:)

  42. is0-mick November 28, 2012 at 7:01 pm #

    I’m a littke bit lost now with all the replies / etc and little pieces of code here and there…

    If you can create some code for your stick that doesn’t show the colours right, and post it on pastebin for me, and post a link to it here.

    Then I’ll be to take a look at it properly.


  43. is0-mick November 26, 2012 at 8:51 pm #

    What code / setup are you using gareth?

    • Gareth B November 27, 2012 at 2:09 am #

      Hi Mick, i’m using the Light Wand Code Generator program and the Mega256 with a 2m long strip of the 8806 leds (104). I haven’t used the SD card option, just simply the 9v battery option. Everything uploads fine and seems to work, until I noticed the colours weren’t correct.
      It’s only when I tried setting R G and B to 255 for each colour in 3 blocks did I find that Green and Blue are mixed up. :)

      • Andre November 27, 2012 at 9:18 am #

        Yes. This strip has the order of the colours swapped. Why don’t you ad an sd card reader? You will have more flexibility + the code Mick built (read down on the forum) has already fixed that problem…

        • Gareth B November 28, 2012 at 6:30 am #

          Hi Mick, Thanks for getting back to me.
          Can you tell me where to find this code?

          I’ve looked in the LEDStrip files and the LPD8806 and I can’t see it?

          Thanks for taking the time to help

          • Gareth B November 28, 2012 at 6:31 am #

            I’ve found this
            setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b),

            • is0-mick November 28, 2012 at 6:56 pm #

              void writeRGB(uint8_t r,uint8_t g,uint8_t b,int nStrip)

              yep, just change that to
              writeRGB(uint8_t r,uint8_t b,uint8_t g,int nStrip)

              before you upload it to the arduino :)
              let’s know how u get on.


      • is0-mick November 27, 2012 at 1:10 pm #

        I haven’t got the code your using in front of me, but you need to look for something like

        strip.setPixelColor(position, strip.Color(red, green, blue));

        in the code
        just swap the likes of that that to

        strip.setPixelColor(position, strip.Color(red, blue, green));

        Hope that helps!


        • Gareth B November 28, 2012 at 6:40 am #

          One last thing, sorry to clog up these posts.

          Which file should I be changing. I’ve noticed that there is similar code once it’s been compiled;

          void writeRGB(uint8_t r,uint8_t g,uint8_t b,int nStrip)

          Will this change once I change the library files? (if that’s what needs changing :( )

          You can email on garethbrooks ( at ) rocketmail.com

    • Gareth B November 27, 2012 at 2:12 am #

      It’s using the most recent one from Phil Wright. Vers and i’ve created a folder for the 8006 in the Arduino library for the latest files. Has to something in the script i’d say, somewhere :(

  44. Gareth B November 26, 2012 at 4:16 pm #

    I’ve just built a 2m 8806 strip (104 leds) and I’m getting my Blue and Green swapped!

    I’ve created an image literally with RGB (in that order and each colour set to 255).

    Any ideas where to look, or what to change?

    Very annoying

  45. Iain November 26, 2012 at 5:34 am #

    Hi Guys

    I’ve made a wiring diagram for the Arduino, card reader and LCD display if it helps at all.
    I’ll send it to anybody that needs it.


  46. is0-mick November 25, 2012 at 9:30 am #

    Hi Leo,
    its because the library was made for Arduino 022 and you are compiling it on a later version.

    A quick google of “WConstants.h: No such file or directory”


    You can either do what it says in the link or install Arduino v022 instead.

    Hope that helps


    • Andre November 25, 2012 at 3:53 pm #

      yep, install v022 instead.
      If that doesn’t work and if you are building a ligtwand with SD and Keypad then Im writing a tutorial on how to set it up based on Mick’s Library. Its still very raw but Ill be happy to email it to you.

    • leo November 26, 2012 at 3:21 am #

      Thank you your help ,andre & Mick
      after use v022 error is fix,but the ledstrip also doesn’t work.>,<
      i think andre , could you mind send me the tutorial ?
      my email :leo_83311@yahoo.com.hk

  47. leo November 25, 2012 at 7:37 am #

    i have some error in LEDStrip.cpp, anyone can tell me how to fix it,thx^^.

    LEDStrip.cpp:30:24: error: WConstants.h: No such file or directory
    LEDStrip.cpp: In constructor ‘LEDStrip::LEDStrip(int, int, int, int)’:
    LEDStrip.cpp:40: error: ‘LOW’ was not declared in this scope
    LEDStrip.cpp:40: error: ‘digitalWrite’ was not declared in this scope
    LEDStrip.cpp:41: error: ‘OUTPUT’ was not declared in this scope
    LEDStrip.cpp:41: error: ‘pinMode’ was not declared in this scope
    LEDStrip.cpp: In member function ‘void LEDStrip::sleep()’:
    LEDStrip.cpp:52: error: ‘LOW’ was not declared in this scope
    LEDStrip.cpp:52: error: ‘digitalWrite’ was not declared in this scope
    LEDStrip.cpp:53: error: ‘INPUT’ was not declared in this scope
    LEDStrip.cpp:53: error: ‘pinMode’ was not declared in this scope
    LEDStrip.cpp: In member function ‘void LEDStrip::wakeup()’:
    LEDStrip.cpp:65: error: ‘LOW’ was not declared in this scope
    LEDStrip.cpp:65: error: ‘digitalWrite’ was not declared in this scope
    LEDStrip.cpp:66: error: ‘OUTPUT’ was not declared in this scope
    LEDStrip.cpp:66: error: ‘pinMode’ was not declared in this scope
    LEDStrip.cpp: In member function ‘void LEDStrip::faderCrank()’:
    LEDStrip.cpp:81: error: ‘millis’ was not declared in this scope
    LEDStrip.cpp:85: error: ‘digitalRead’ was not declared in this scope
    LEDStrip.cpp:85: error: ‘HIGH’ was not declared in this scope
    LEDStrip.cpp:86: error: ‘LOW’ was not declared in this scope
    LEDStrip.cpp:86: error: ‘digitalWrite’ was not declared in this scope
    LEDStrip.cpp:89: error: ‘digitalWrite’ was not declared in this scope
    LEDStrip.cpp: In member function ‘void LEDStrip::faderSpeedSet(unsigned int)’:
    LEDStrip.cpp:108: error: ‘LOW’ was not declared in this scope
    LEDStrip.cpp:108: error: ‘digitalWrite’ was not declared in this scope
    LEDStrip.cpp:118: error: ‘HIGH’ was not declared in this scope
    LEDStrip.cpp:118: error: ‘digitalWrite’ was not declared in this scope
    LEDStrip.cpp:120: error: ‘millis’ was not declared in this scope
    LEDStrip.cpp: In member function ‘void LEDStrip::rgbPush(uint8_t, uint8_t, uint8_t)’:
    LEDStrip.cpp:157: error: ‘_BV’ was not declared in this scope
    LEDStrip.cpp: In member function ‘void LEDStrip::rgbPush2X(uint8_t, uint8_t, uint8_t)’:
    LEDStrip.cpp:172: error: ‘_BV’ was not declared in this scope
    LEDStrip.cpp: In member function ‘void LEDStrip::sPulse()’:
    LEDStrip.cpp:186: error: ‘digitalRead’ was not declared in this scope
    LEDStrip.cpp:186: error: ‘HIGH’ was not declared in this scope
    LEDStrip.cpp:188: error: ‘LOW’ was not declared in this scope
    LEDStrip.cpp:188: error: ‘digitalWrite’ was not declared in this scope
    LEDStrip.cpp:189: error: ‘delayMicroseconds’ was not declared in this scope
    LEDStrip.cpp:194: error: ‘digitalWrite’ was not declared in this scope
    LEDStrip.cpp:195: error: ‘delayMicroseconds’ was not declared in this scope
    LEDStrip.cpp:196: error: ‘LOW’ was not declared in this scope
    LEDStrip.cpp: In member function ‘void LEDStrip::pushCmd(uint8_t)’:
    LEDStrip.cpp:213: error: ‘B00000011’ was not declared in this scope
    LEDStrip.cpp:214: error: ‘B00110000’ was not declared in this scope
    LEDStrip.cpp:215: error: ‘B11001100’ was not declared in this scope
    LEDStrip.cpp:217: error: ‘MSBFIRST’ was not declared in this scope
    LEDStrip.cpp:217: error: ‘shiftOut’ was not declared in this scope
    LEDStrip.cpp: In member function ‘void LEDStrip::latch()’:
    LEDStrip.cpp:222: error: ‘HIGH’ was not declared in this scope
    LEDStrip.cpp:222: error: ‘digitalWrite’ was not declared in this scope
    LEDStrip.cpp:223: error: ‘delayMicroseconds’ was not declared in this scope
    LEDStrip.cpp:224: error: ‘LOW’ was not declared in this scope

  48. is0-mick November 20, 2012 at 6:09 pm #

    As promised (see post below this one) here is the new code for the HL1606 stip.




    • Nigel December 18, 2012 at 3:11 pm #

      hi Is0-Mick,

      i am still using my lightwand withoud LCD and SD card. But would love to integrate these but i am unsure wich to order. Could you tell me what hardware you use? (it could be around here but i’ve seen that they are also using another led strip. :)

      thanks in advance


  49. is0-mick November 20, 2012 at 6:07 pm #

    Hi Guys,
    I’ve created a new version of code for the LCD + SD that now supports direct reading of BMP files from the card for the HL1606 strip.
    So no need to convert them anymore :)

    I tried with the same images I used on the LPD8806 version, here are the images it created.


    The images used were 52 high, and the strip is only 48, so it clipped the top of one or two of them.

    I’ll post a link to the code very soon..


  50. Todd November 16, 2012 at 12:59 am #

    Is there a listing of what each setting in the Code Generator is supposed to do written down somewhere. I was able to figure out the settings for a single strand by reading other posts here, but now trying dual strips and using the schematic Phil has and not sure I am getting the settings right in the software. Thanks

  51. Andre November 13, 2012 at 1:06 pm #

    Thats an amazing work Mick!
    Thank you so much for sharing

  52. is0-mick November 13, 2012 at 5:30 am #

    Another Improvement!

    I’ve now added the Gamma Lookup Table that I came across in one of the LPD8806 examples, which seems to do a better job of converting 8bit RGB values to 7bit RGB due to the way our eyes work!

    Previously I was just bit shifting, but the Gamma lookup helps produce an image that looks more comparable to the input image.

    The image produced by bitshifting seemed to lack a little contrast and seemed too bright.

    I’ve uploaded a picture to flickr produced with the new code so you can compare.

    New code is now here:


  53. is0-mick November 12, 2012 at 10:30 am #

    Small video of the Completed wand:

    Some pictures created with it:


  54. is0-mick November 11, 2012 at 6:55 pm #

    Newest version 1.04 is now available here:

    This version fixes the backlight problem and also
    a strange problem where the last LED in the strip remained green when clearing the strip, if the last line / pixel on the image shown, is not black which I noticed when displaying an image tonight.

    Apparently this issue is to do with the LPD8806 hardware or Library, and calling strip.show() twice when clearing the strip seems to fix it!
    So I added that :)

    Hopefully this should be the last update for a while!


  55. is0-mick November 11, 2012 at 2:05 pm #

    Small slight bug..
    void BackLightOn()
    BackLightTimer = true;
    int BackLightTemp = BackLightTimeout;

    should read
    void BackLightOn()
    BackLightTimer = true;
    BackLightTemp = BackLightTimeout;
    (remove the int bit from the last line)

    This bug made the backlight still dim when you pressed a key. Removing the “int” makes it stay lit properly when you press any keys on the keypad (except send) because we dont want the lcd being picked up by the camera 😀


  56. Michael Ross
    Michael Ross November 11, 2012 at 11:26 am #

    Howdy Everyone! I have been crazy busy with a new job I started back in October and it doesn’t show any sign of letting up any time soon. I just wanted to thank you all for sharing your improvements and helping each other out with questions and ideas! I hope to get back into some Light Painting soon! Cheers! :-)

  57. is0-mick November 11, 2012 at 10:39 am #

    Hi All,
    Iain Kindly sent me some LPD8806 Strip, and I’ve created a version of my LCD + SD code for that strip.

    This version now uses plain 24bit BMP files, no need to convert them or anything 😀 but they do need to be rotated 90 degrees to the right. I did do this on the arduino board but it was way too slow.

    So, just create a bitmap of lets say 52 (your number of led’s) by whatever.. rotate it 90 degrees, and save it as 24bit colour… Drop it onto the SD card any you should be good to go!

    Code is here:



  58. Iain November 8, 2012 at 12:38 pm #

    Hi Mick
    I’ve been trying to email you for your address but it keeps on bouncing back!!

  59. Iain November 5, 2012 at 9:54 am #

    Hi Mick sorry I missed you, no sign of those 8806 yet won’t know until Wednesday if I’ll get them or not.

  60. is0-mick November 4, 2012 at 5:33 am #

    Still in the lakes, near ullswater, heading back tomorrow lunchtime..


  61. Iain November 3, 2012 at 6:47 pm #

    Hi Mick
    You should have said you were in the lakes I would have put the kettle on!!!

  62. is0-mick November 3, 2012 at 6:18 pm #

    Hi guys, away caravaning in the lakes for the weekend, will try to have a look when I get back. Internet on my phone ain’t great, and its also bloody cold!


  63. Iain November 2, 2012 at 6:55 am #

    Hi Andre

    I think you’ve miss understood my post I haven’t got two one meter strips of 8806 but one two meter length that I have been able to get working using just the arduino + 8806 (see here for result)
    its getting it working with the LCD + card reader that I’m at a loss with but with the expert help from this blog I’m sure we’ll get it working.

    cheers Iain

  64. Phil Wright November 1, 2012 at 3:47 pm #

    Hi Guys, email me your phone number to philwright@live.com I can phone you tomorrow to give you advice

    But read through the threads on this website there are a number of tips re pinouts



  65. Iain October 29, 2012 at 7:07 am #

    Hi all

    I to am in the same position as Andre,
    I’ve got all the bits but no idea!! sorry.
    I’m using 104 leds LPD8806 + Arduino mega + SD card + LCD Keypad
    and I to live 5 hrs from London!!!
    I understand how your very busy on another poject at the munite Mick
    but if you can find a little time just to answer these few questions and point me in the right direction it would be much appreciated
    I have tried changing the writeRGB(r,g,b);
    to strip.setPixelColor(LED_number, strip.Color(r, g, b)); as you sugested but got the following error
    when trying to load the code
    ‘strip’ was not declared in this scope

    I have downloaded the zip file of the 8806 library, uncompressed it then renamed it but now don’t know what to do with it
    I’ve also tried removing the
    #define CLKPIN 32
    #define LATCHPIN 33 as the 8806 only has 4 wires – + DI and CI but this just brings up more errors. Also do I need to remove/rename all the any lines that refer to HL1606 or will that be sorted out by using the 8806 library file
    I have been successful in connecting the LCD + card reader (thanks to Vass) and even managed to change the backlight time out and #define striplength but am desperate now to bring it all working together.
    Please help
    Many thanks

    • Andre November 1, 2012 at 1:04 pm #

      Hi Iain
      From your post I understand that you are working with 2 strips of 1meter of LPD8806 52leds per meter.

      If thats the case, then my guess is that you should be working with Phil Right file for dual strips and not with Micks file for HL1606

      But I don’t really understand much about arduino programming so I may be wrong.

      If I manage to find the solution to ake this work I will inform you. Please do the same for me.
      Good luck

    • John November 19, 2012 at 9:53 am #
  66. is0-mick October 26, 2012 at 7:31 pm #

    Hi Andre,
    Im about 5 hours north of london..
    I can try to help over the internet etc, but I will be unable to do any testing as I dont have any 8806 strip, so you’ll have to do the testing, or if you have any spare strip?

    I’ve got another project I’m currently working on so time is a little short also :(


    • Andre November 1, 2012 at 12:58 pm #

      Once more thank you for your kind reply.
      I sent you an email

  67. Andre October 26, 2012 at 3:33 pm #

    Hi Mick
    Thank you for your answer.
    I have all the libraries including Phil Wright’s .pde to upload and also the one you made for the Hl1606. I even tried to combine them. But I couldn’t get it to work
    I don’t think I have enough knowledge to do these changes by myself.
    Do you live in London?
    Would you be willing to meet up so we would work on this?

  68. is0-mick October 26, 2012 at 2:28 pm #

    Just done a quick search on google and the library is here:

    You can use any pins you like by calling the following routine:
    LPD8806(uint16_t n, uint8_t dpin, uint8_t cpin); // Configurable pins

    In my code it uses a writeRGB, in the LPD8806 library it uses.

    strip.setPixelColor(position, strip.Color(red, green, blue));

    In my code theres a section called Post Frame which has a line called

    You would probably need to replace that with
    strip.setPixelColor(LED_number, strip.Color(r, g, b));

    You’ll nee a few other changes, but it shouldn’t be too difficult with a little work to get it working


  69. is0-mick October 26, 2012 at 2:13 pm #

    I’d guess you’ll have to change my code to use the the library for the lpd8806, most libraries let you define what pins you want to use, so that bit is really up to you I’d guess.

    Currently the LCD+SD code uses the HL1606 strip, as that’s the only one I have. Unfortunately I dont have any 8806 strip to test with.


  70. Andre October 26, 2012 at 8:36 am #

    Hi all
    I have gathered all the materials to build my DLW. I have a 52 leds lpd8806 strip + Arduino mega + SD card + LCD keypad. Can someone please help me and tell me what libraries I should use + what connecting points at the arduino?
    Thank you

  71. is0-mick October 18, 2012 at 6:39 pm #

    You could try to convert my code to use your library, and use the SD card and LCD?

    I’d have a go myself but I dont have any 8806 strip


  72. G Brooks October 18, 2012 at 6:41 am #

    All sorted on that front!

    Just one major thing that’s bugging me now lol!
    I’ve built the setup with a 6 position switch, now it looks like I can’t use this with my 8806 strip and the generator program! :(

    Is there a way of doing this? it’s a pain just having 1 image to use otherwise.


  73. is0-mick October 13, 2012 at 7:04 pm #

    had a similar problem with my HL1606 strip. I guess some are wired different at the LED end.

    I had to change the code to swap the B and G

    //My strip seemed to have B + G swapped so I altered it here!
    if (Blue > HL1606highblue) colorByte |= 16; //Bright Blue
    else if (Blue > HL1606lowblue) colorByte |= 32; //Dim Blue
    if (Red > HL1606highred) colorByte |= 4; //Bright Red
    else if (Red > HL1606lowred) colorByte |= 8; //Dim Red
    if (Green > HL1606highgreen) colorByte |= 1; //Bright Green
    else if (Green > HL1606lowgreen) colorByte |= 2; //Dim Green

    That was from my SD + LCD code, not sure what you are using, but thats how I swapped them around…


  74. G Brooks October 13, 2012 at 6:17 pm #

    Right, I’ve got it working, but the colours don’t match!!! Hmmm Any ideas?

  75. G Brooks October 13, 2012 at 11:02 am #

    Hi everyone,

    I’ve got the the 8806 strip (1m with 32LED’s). I have a problem now as the strip only has 4 terminals, but the version in the tutorial has 6 terminals!

    I gathered the +5V and the GND are the same, but I only have 2 others; DI and CI.

    Any ideas as to where they need to be wired up to on the mega 256? I don’t know where to go from here :( Please help

  76. is0-mick September 30, 2012 at 5:10 pm #

    Glad you got it working Vass :) I look forward to seeing some of the photo’s of it in action!

    I really should use mine more..


  77. Vass September 28, 2012 at 4:43 am #

    Congrats on finding the problem guys, the SD card and LCD work fine with Micks LSB files

    It still didnt work on my files, until I reduced the LED strip size to 48 in the code generator, that was the problem, it’s not liking 64 LED’s

  78. vass September 27, 2012 at 4:10 am #

    I will give them a go, thanks Mick

    (Hope all is well with you)

  79. unlimited site map September 19, 2012 at 11:55 pm #

    Thanks for sharing your thoughts on sitemaps.

  80. is0-mick September 19, 2012 at 3:34 pm #

    Sounds more like incorrect / faulty LSB files..

    Here are 3 that I used (they are for a 48 led strip)


  81. vass September 18, 2012 at 3:52 am #

    maybe my LCD is faulty?

  82. Vass September 17, 2012 at 12:08 pm #

    Thanks Phil
    I have created a brand new folder and thrown all your files into there, running that Arduino 0022 and uploaded Micks latest .code

    The LCD shows the files selctable, but once you hit select on one of them, the screen freezes with “Sending File Filename.LSB”

    no activity on the Arduino, no flashing lights, nothing.
    Wired as per my last post. so I’m getting the same result.
    It’s so close ! what can it be? +5v and GND from the LED strip are going to the same digital pins as the SD card, it that right?
    anything else to consider?
    Ta again

  83. Phil September 17, 2012 at 3:40 am #

    Sorry completely forgot abou this – it is uploading now so give it 5 mins and there will be an Arduino-022.zip in my downloads directory http://www.wright-online.com/downloads

    • Andre November 1, 2012 at 1:13 pm #

      Hi Phil
      I am trying to build a digital light Wand with arduino mega + lcd keypad + sd card + dual strip LPD8806.
      This strip has 52leds/meter and data is clocked in in blue, red, green order instead of RGB.
      I believe you have built one DLW with dual LPD8806.
      Can you please help us with what connections and libraries should be used + settings for the code generator?

  84. is0-mick September 17, 2012 at 3:29 am #

    I’ll copy my whole arduino dir + project folder, but it’s on another hard drive, that used to be inside my laptop, so I need to dig out a usb > sata adapter etc, power supply, and then copy it and upload it, so It’s a little bit more complicated than just uploading it somewhere.

    Will try to do it today..


  85. vass September 17, 2012 at 2:24 am #

    any update chaps ?

  86. Vass September 14, 2012 at 12:42 pm #

    We are getting there! success, the Arduino0022 is taking the upload without error after I used the SD from Phil here

    Now, the images are listed on the LCD, so we are so close!
    but, the “Sending File” just sits there for ever, nothing changes.
    Looks like this…

    So the bit you wanted to check and fix first, looks good Phil.

  87. vass September 14, 2012 at 8:17 am #

    how about putting all the correct files in once place?

    Aduino 0022

    and a definative SD sheild to Arduino Pin to Pin detail

    the LCD can only fit one way (+5v to +5v)

    Just an idea so we know we are all on the same page?

    thanks again for all your input guys, its really apprecaited.

  88. is0-mick September 14, 2012 at 7:58 am #

    sorry that should have read

    portoutputregister not defined in this scope

  89. is0-mick September 14, 2012 at 7:57 am #

    Lots of people seem to have the same error as vass using other libraries also..
    a quick google of

    outputregister not defined in this scope

    or the other related errors, seem to suggest it’s to do with the arduino version…


  90. vass September 14, 2012 at 6:15 am #

    will try your SD code tonight, thanks Phil

  91. Phil September 14, 2012 at 5:33 am #

    Vass, you haven’t got as far as compiling the code yet, let alone it reading the SD Card – so we need to get that bit fixed first. Have you tried my SD card library?

    Thanks Mick, as it works on mine I want Vass to get his compiled first before I get him to make any changes. I can’t find any of the routines in his error log in my SD2Card.cpp file so I don’t know what is happening.

  92. Vass September 14, 2012 at 5:12 am #

    I have a new 16Gb card formatted and has only 6 images created using the DLW code generator and saved to the card directly.

    Maybe I should format differently? could that be it? Doent explain why the LCD will not run the basic “hello world” examples.

  93. is0-mick September 14, 2012 at 4:42 am #

    Hi Phil,
    that SD library has a bug in it.
    You need to add the following line:
    if (root.isOpen()) root.close(); // allows repeated calls

    (see my post about 5 down)

    Otherwise if you remove the SD card, it wont initialise it again..


  94. Phil September 14, 2012 at 3:18 am #

    Hi Vass,
    I have uploaded my SD library to my downloads area on my website http://www.wright-online.com/downloads/SD.zip

    try overwriting yours with this one (version 022) and see how you get on.

  95. Vass September 14, 2012 at 3:08 am #

    Version .22 gives me the result from before
    with the same setup


    Are my pin selections right?

  96. is0-mick September 13, 2012 at 4:56 pm #

    I’m using 1.0 or 022 I think is its other name..


  97. Vass September 13, 2012 at 4:11 pm #

    I’m at a loss, have no idea why mine will not work
    Non of the Examples that come with Arduino software will run the LCD, but a self typed Sketchbook works fine.
    I have the LCD plugged in correctly I’m sure (just like in your video)
    the SD card (LC Studio verion) is attached as follows
    GND to GND next to digital pin 53
    +5v to 5V next to Digital pin 22
    CS to Pin 53
    MOSI to Pin 51
    SCK to Pin 52
    MISO to Pin 50

    DLW to pins 30,31,32,33

    Now trying Arduino v 1.1

    but this is the result of an upload attempt

    Hope you can help

  98. is0-mick September 12, 2012 at 5:19 pm #

    Well the main bit would be to replace the code in this function with whatever commands your strip uses to write colours.

    void writeRGB(uint8_t Red,uint8_t Green,uint8_t Blue)
    insert code here to control your strip…

    You’d also need to initialise your strip at the start of the code..
    which is currently done here:

    Hope that helps


  99. julien beaumont September 12, 2012 at 4:20 pm #

    Hi, I used mick code to get my sd and lcd working but it’s not for the ws2801 leds… Any Idea on how I can make it work ? Thanks

  100. is0-mick September 12, 2012 at 4:16 am #

    Not sure on that error, but here is a zip of my SD library, and the code etc.



  101. Vass September 12, 2012 at 1:44 am #

    Thanks Mick
    I have taken the SD from the link you gave
    (full zip file)
    and used your latest code from here.

    Modifying the SD.cpp I have no idea how, can you upload a final file with this done at all?

    I only have a small error now
    see here

    any ideas? sorry for being a pain!

  102. is0-mick September 11, 2012 at 1:10 pm #

    You should also modify SD.cpp in the SD folder to the following..

    /* Implementation of class used to create `SDCard` object. */

    boolean SDClass::begin(uint8_t csPin) {

    Performs the initialisation required by the sdfatlib library.

    Return true if initialization succeeds, false otherwise.


    if (root.isOpen()) root.close(); // allows repeated calls
    return card.init(SPI_HALF_SPEED, csPin) &&
    volume.init(card) &&

    ^^^^– That allows the SD card to be removed and inserted again while the thing is powered on, otherwise it just gets stuck in a loop :)


  103. Phil Wright September 11, 2012 at 12:02 pm #

    It looks like you might be missing the on of the header libraries Check that you have the following three in place in the arduino libraries directory.

    SD.h can be found here I think (is0-mick might be able to confirm) https://github.com/adafruit/SD

    the other two are in the zip file you downloaded from my site to get the lightwand generator.

  104. Vass September 11, 2012 at 3:37 am #

    OK digital pics from the youtube vid, thank you.

    Now it seems almost happy, I’m running Arduino v22

    upload of the code fails with the following
    ‘void GetFileNamesFromSD(File)’:
    ‘class File’ has no member named ‘openNextFile’
    : ‘class File’ has no member named ‘isDirectory’
    ‘class File’ has no member named ‘name’

    Any ideas folks?
    thanks again
    new_LCD_and_SD_code:368: error: ‘class File’ has no member named ‘name’

  105. Vass September 10, 2012 at 2:46 am #

    Thanks Phil, that was the missing part of the puzzle

    Just need the wiring to the Digital pins on the Mega from the SD sheild now.
    (sorry the schematic I can’t understand)

    Ta for all the help

  106. Vass September 9, 2012 at 1:39 pm #

    I’m being really dumb

    the DLW code generator, I import a BMP and try to save it, but the filename offered is a .lwp (Save project as)
    I cannot find an option to save as .lsb

    • Phil Wright September 9, 2012 at 2:17 pm #

      Hi Vass, make sure you have SDCard selected in file, settings. You may have to exit the program and restart and then you will get a button appear that say’s “Save 4 SDCard”
      Hope that helps

  107. is0-mick September 8, 2012 at 5:17 pm #

    No, you use phils code to generate LSB files.
    These are like bitmap files, if you select one of the options (can’t remember off hand) it lets you load a bitmap file, then you can save it as an LSB file.

    Just drop these LSB files onto the SD card.

    My code will scan the SD card’s root directory, and show all the LSB files there in a list on the LCD screen.

    Hope that helps


  108. Vass September 8, 2012 at 9:09 am #

    phils code, is that the excel design version, or the DLW code generator that takes already designed bmp’s?

    Still confused sorry, am I putting bmp’s on the SD card, or lists of code from the code generator?


  109. is0-mick September 5, 2012 at 12:32 pm #

    Here is what I posted with links removed

    Posted August 31, 2012 at 4:39 am by is0-mick | Permalink Your comment is awaiting moderation.

    No, the code is downloaded from paste pin. The arduino never needs reprogramming.

    I use phils code to generate image files. such as skull.LSB which is like a bitmap file. You just put the images you want onto the SD card, then select the one you want to display from the LCD menu on the arduino

    I just used the LCD / Keypad shield and the SD reader here:



    All of the pins should be defined in the code. The SD used the default SPI pins, and the HL1606 strip pins are the ones defined in the arduino code at the start.

    I did a couple more tweaks to the code, the latest version can be found here:


    Hope that helps


  110. Michael Ross
    Michael Ross September 5, 2012 at 12:31 pm #

    Howdy everyone. I apologize for the delays in responding. Have been very busy lately. I will try to catch up this afternoon. :-)

  111. is0-mick September 5, 2012 at 12:21 pm #

    Yes, I replied 2 hours after you asked, but it says my comment is “awaiting moderation”


  112. Vass September 5, 2012 at 2:49 am #


    can you elaborate on the setup please as per my last post

    thanks muchly

  113. julien September 2, 2012 at 3:38 pm #

    Hi, I have some issues with a ws2801 strand (https://www.adafruit.com/products/322)
    First, if I load a jpeg in phil’s code generator, it displays only on the first 12 leds…
    And if i make an image inside the code generator, it displays on all the leds but black remains lit…

    • Michael Ross
      Michael Ross September 6, 2012 at 11:51 am #

      Hi Julien, From the short description you provided, it could be a hardware issue or software settings. What settings do you have selected in the Digital Light Wand Code Generator? (Both the settings in the File/Settings area and the settings on the main screen). As far as lights remaining lit for black, it could either be the drivers or version of the Arduino software that you are using. (See some of the others that experienced something similar to this below) Please provide more details on what your setup is and I might be able to be a bit more specific. :-)

    • julien beaumont September 7, 2012 at 5:01 pm #

      Hi and thanks for your reply, here is my settings from file settings:
      Hardware Ws2801
      led strip size 24 (I cutted the last one from the strip)
      hardware spi led strip checked
      sdi spi 51 52
      ledpin 1
      compiler directory: the forlder where arduino 1.0.1 is installed

      settings from main page:
      number of leds 24
      led strobe on time 0.15
      the rest remaine by default

    • julien beaumont September 7, 2012 at 5:02 pm #

      I tried with another strip and another arduino board (Mega 2560 also) same result

  114. is0-mick August 31, 2012 at 4:39 am #

    No, the code is downloaded from paste pin. The arduino never needs reprogramming.

    I use phils code to generate image files. such as skull.LSB which is like a bitmap file. You just put the images you want onto the SD card, then select the one you want to display from the LCD menu on the arduino :)

    I just used the LCD / Keypad shield and the SD reader here:



    All of the pins should be defined in the code. The SD used the default SPI pins, and the HL1606 strip pins are the ones defined in the arduino code at the start.

    I did a couple more tweaks to the code, the latest version can be found here:


    Hope that helps


  115. Vass August 31, 2012 at 1:04 am #

    Ok, so you use phils program to create the code, you then paste these all together in one text file and put it on the SD card? How do you name them and separate each design? Or did you mean you put the .bmp’s on the SD card? Also, what’s the wiring for the SD shield to the arduino? Which pins go where? Thanks in advance

  116. is0-mick August 30, 2012 at 5:24 pm #

    Ooops meant LSB files not pde.
    Also you can adjust the delay via the left an right keys.

    The source code is posted in comments further down, or here is the link.



  117. is0-mick August 30, 2012 at 5:18 pm #

    Yes, I used phils program (slightly modified as I removed some of the smoothing, and had to swap some colours / values if I remember) to create the pde’s. Then just drop them onto the sd card.

    My Arduino code then scans the sd card, and sorts the filenames into an alphabetical list, and displays them on the LCD screen.

    An early version (without the alphabetical sorting) can be seen on youtube here..


  118. Vass August 30, 2012 at 6:30 am #

    is0-mick, awesome, just what I need.

    Are you still using the light wand code generator?

    Can you explain how your getting the designs onto the card?

    I presume just plug in the LCD and the SD card sheilds or is there more to this?

    photos, tutorial, etc ? much apprecited if possible

    thanks in advance

  119. is0-mick August 30, 2012 at 5:31 am #

    I made a version a while back that uses the Arduino with a SD and LCD with a menu to select the images sorted in alphabetical order. (code is posted in the comments below).

    I think the rasberry pi would be a bit overkill myself..


  120. GBrooks August 17, 2012 at 7:49 am #

    I’ve got myself a Raspberry Pi and i’ve noticed this has an SD slot on it! Possibility of storing so much more than an Arduino board!

    I’ve seen a couple of pics with the Raspberry Pi already and they’re amazing

  121. Julien July 17, 2012 at 4:41 pm #

    Hi and thank you for your great work, I already made a wand with the HL-1606 strip and it works fine, now I’m trying to make another one with a WS2801 12mm 25 led by strip: https://www.adafruit.com/products/322
    does anyone knows how to make it work with phil’s code generator ?

  122. Phil June 26, 2012 at 6:06 am #

    Wherever possible use .PNG files rather than .JPG as the JPG Codec in windows automatically tries to smooth out the image (causing grey or colour shaded pixels). When you have a large number of pixels (like on a monitor) it looks great but when you only have 16, 32 or 64 pixels/LEDs it causes problems. Using .PNG files will make sure the pixels are not blended, and give you more accurate results.

    • Seth June 28, 2012 at 1:18 pm #

      Phil, you s/w does not seem to let me import PNG. Do i rename to a bitmap and import?

      • Michael Ross
        Michael Ross June 28, 2012 at 1:24 pm #

        I think if you just type the file name into the dialog box, it will import it. (provided you are in the proper folder). The dialog box is limited to displaying JPG, BMP, and LPJ files but you can still type in the name of a PNG file if you want.

  123. Vass June 25, 2012 at 4:20 pm #

    We design in photoshop, the save as bmp and use the code generator. Just keep a few lines black and they don’t light for us.

    If too bright and losing colour in the photo, adjust apeture to cut the light getting through.

    • Michael Ross
      Michael Ross June 25, 2012 at 5:29 pm #

      Thanks VASS! Good Point!

      The HL1606 strips don’t give you much flexibility with brightness levels. The other two strips however, give you a LOT to play with on the color and brightness levels side of things. Seth sent his image to me so I could see what he was seeing and yes… the LEDs are super bright and the best way to deal with the brightness levels is to close down the aperture (I always use f16 to f22 range with them) and or lower the ISO if possible. There is also the option of playing the program faster and moving the lightwand faster as well.

      I usually use Photoshop to reduce the pixel size of the image and lower the brightness levels to help tone things down a bit also. :-)

      • eric June 26, 2012 at 3:58 pm #

        solvet that problem, it was my hl1606 but its kinda fixed now, now i only have the problem that red and blue is changed

        • Michael Ross
          Michael Ross June 26, 2012 at 4:01 pm #

          Read further down in the history of comments. Others have had this problem as well. I think you can fix it by making sure the library is up to date with the one supplied with Phil’s program. I also think others have fixed it by going back to version 22 or 23 of the Arduino software.

    • eric June 26, 2012 at 3:15 pm #

      Hi there Ross, i have gotten a hl1606 now and trying out your code, dosent seem to get the leds to light upp when i use the pins 30-33 as in the code, any ideas ?
      everytign seems to be right in the generator software aswell

      • Michael Ross
        Michael Ross June 26, 2012 at 3:41 pm #

        Hi Eric, Are you using the spreadsheet or the Lightwand Code Generator? The HL1606 strip has 6 connections. Power (+5v), Ground (GND), Serial (S-I), Data (D-I), Clock (CK-I), and Latch (L-I). In the tutorial I have them connected to the following Pins on the Arduino
        GND ‐> Connect to GND Pin on the Arduino Mega
        S-I ‐> Connect to PWM Pin 9 on the Arduino Mega
        D-I ‐> Connect to PWM Pin 10 on the Arduino Mega
        CK-I ‐> Connect to PWM Pin 4 on the Arduino Mega
        L-I ‐> Connect to PWM Pin 3 on the Arduino Mega
        +5V ‐> Connect to 5V Pin on the Arduino Mega

        Make sure you use the INPUT side of the HL1606 strip and NOT the OUTPUT side. Input is identified by the “I” in the S-I, D-I, CK-I, and L-I on the strip. Also, I am not sure why you went with pins 30-33 but those are Digital Pins on the Arduino Mega and the code might not work the same with those as they do with the PWM pins on the Arduino. So I would use the pins I specified in the tutorial. At the very least, just to make sure things are the same.

        Also, it would help if you would be as specific as possible in your setup if you continue to experience problems. The more information we have about the setup, the better off we all will be in troubleshooting it. :-)

  124. Seth June 23, 2012 at 10:17 pm #

    Is there a trick to getting black (led off)? I’m using Phil’s code generator and what I think is black is actually still lit?

    Hope that makes sense!

    • Michael Ross
      Michael Ross June 23, 2012 at 10:24 pm #

      I would guess that it would have to be black in the original image (RGB Value of 0,0,0 or 000000). Can you email the original image to me so I can take a look at what it is doing? MichaelRRoss@Verizon.net

    • Seth June 24, 2012 at 8:19 pm #

      Michael, how would I check the value?

      • Michael Ross
        Michael Ross June 24, 2012 at 8:36 pm #

        Well, if you didn’t create the image, I am not sure how to tell you to see what the value is for specific pixels in an image that already exists. I can only assume that if the lights are still on on the strip, then it must not be absolute “black”. To ensure that specific pixels are absolute black, you can open the image in MS Paint, select the black color and make sure each pixel that you want to be black is set to that color. I think Phil added a basic pixel editor in the DLW Code Generator program so you might be able to use it, but I haven’t used that part of the program so I do not know how it works.

        • Seth June 25, 2012 at 3:47 pm #

          Im using 8806 BTW

      • Seth June 25, 2012 at 3:44 pm #

        OK, I think I see the issue. I am getting some true blacks. Where I have the issue is with importing Jpgs. It seems like the brightness is cranked way up so tyhe colors are washed out and bright. Is there a way to adjust this?

        • Michael Ross
          Michael Ross June 25, 2012 at 3:59 pm #

          Not in the Lightwand Code Generator. If the image is that bright where it is causing brightness issues in the code generator, then you will have to use another program to lower the brightness levels of the image before it is imported. I am throwing out some general suggestions. Without the specific image to troubleshoot and see what you are seeing, I can only guess.

  125. Seth June 20, 2012 at 9:38 am #

    Ahh, so even if I have 64 LED’s the S/W will drive only the led’s that its programed for?

    If so this is great. I am going to look for some way to snap extensions on!

  126. Vass June 20, 2012 at 9:24 am #

    Hi Seth
    There is no reason why not.
    You’d have to think about supporting the connections as you go longer.

    If you dont mind waving a 2mtr wand about, you can opt just to light the first 16, 24, 48, 64 LEDs of course. The rest just won’t show up unlit.
    Cheers :=-)

    • Jade June 20, 2012 at 12:50 pm #

      I don’t see why this wouldn’t be possible depends on the connection though as it will add a gap to the strip I personally use a nine pin connector only using four of the pins same style as a monitor cable I was thinking of just using a similar connector on different size wands good luck

  127. Seth June 20, 2012 at 8:27 am #

    Hi Guys, I am crazy excited to build a wand. My parts should arive today. I have a question. Can I, or has anyone made a scalable wand? I was thinking of making some sort of detachable stick with some sort of connection. So I can have a 16 led strip or put on an extension to 48 or 64.

    Would this work?

    • Michael Ross
      Michael Ross June 20, 2012 at 1:01 pm #

      Yep! As the others said, it will work just fine. About the only problem I see with it is that you are adding more connections, which will in turn add more opportunities for problems to come up. Also, when you cut the strip, make sure you are doing so on the cut lines. And try to be fairly precise with this as well. If you get it off a little bit, there is the possibility of cutting through another trace in the circuit and that will just cause you grief. 😉

  128. Vass June 17, 2012 at 11:17 am #

    cheers Phil, probably going to raise more Q’s than it answers.

    I built the wands with the rotating 6 position switch, but obviously the Mega has memory limitations, plus the code generator doe not include this feature.
    Any plans to roll this out or will bluetooth be the way forward (is suspect the latter)
    Or, has this project ended? I see i’m a bit late coming to the game

  129. phil June 17, 2012 at 8:48 am #

    The schematic is here for SDCard.


    The bluetooth was just concept design i put together i can let you have the code if you wish but it is very basic

  130. Vass June 17, 2012 at 6:59 am #

    not wanting to thread nap

    but I have some 8806 strip too

    on eBay

    Item number: 120931700712

  131. Vass June 17, 2012 at 5:48 am #

    Hi Jade
    £ 60 inc postage to UK for 2 metres.

  132. jade stewart June 17, 2012 at 5:40 am #

    Hi Vass

    I was thinking of building a 2nd wand
    so would love some extra led strip

    how much would you want for around 2 meters.

    thanks jade

  133. Vass June 17, 2012 at 3:11 am #

    Hi folks, with gratefull help from Tx I got 2 wands working. Both using HL1606 64 leds and Arduino version 22,
    If anyone in the UK wants a length of LED strip, I have approx 3metres left over.

    I followed the PDF build instructions to the letter and apart from using an updated Arduino program then going down to 22 it all worked faultlessly.

    Now I want to add the SD card and bluetooth design change from my phone. Is this build change published anywhere?

    Thanks again.

  134. Phil June 16, 2012 at 4:03 pm #

    make sure the sdcard is freshly formatted and only the lightwand bitmaps on it

  135. Phil June 15, 2012 at 4:32 pm #

    The lightwand generator code for windows converts the JPG, BMP or PNG bitmap to a format that the readbitmap.pde can read from the SDCard. So generate the bitmap first and save it to the SDCard and then compile and upload the readbitmap.pde through the Arduino Compiler and it should read in the file, display what it is doing on your LCD screen and drive the LEDs.

  136. marm June 14, 2012 at 3:56 pm #

    Hey miek do you have a ws2801 version of your awsome code

    • Michael Ross
      Michael Ross June 15, 2012 at 12:59 am #

      Hi marm! The Lightwand Code Generator that Phil created will generate code for eht ws2801 strips and led pixel chains. I don’t have a version of the spreadsheet for the WS2801 but I could probably come up with one if there was interest in it.

      • marm June 15, 2012 at 2:47 am #

        oh yes, but i was more thinking of the loader code for sd cards and lcd screen. was reading about mike´s code ^^

        • Phil June 15, 2012 at 5:08 am #

          Hi Marm, The readbitmap.pde in the main download zip is the code for the LPD8806 and the sdcard bitmap reading, but the LPD8806 and the WS2801 are very similar, so it should just need a change in the post_frame() subroutine. Basically remove the two writeRGB(0,0,0,StripControlx) lines and insert a delay(50) instead and it should work if I remember correctly – sorry not played with this for a few months now.

          Eric below in this blog is also trying to do the same thing – might be worth you working together on it :)

          • marm June 15, 2012 at 3:43 pm #

            So what does that bitmap do ? read bmp files to led information? or use generator files

  137. jade June 14, 2012 at 7:40 am #

    I’ve been using my light wand to recreate the light graffiti effect in video using kdenlive’s light grafite plugin.


    Heres a Video I created for a honours project at university


    any comments more than welcome

    I’m thinking of creating a tutorial detailing how it’s created would love to know what people think

  138. Phil June 14, 2012 at 7:26 am #

    Glad to hear you have it working :)

    .PNG files work best

    Just ignore the led pin it doesnt do anything

  139. Dirk Wohlrabe June 14, 2012 at 6:21 am #

    Yeapeee!!!! I installed it on my Laptop 8740w HP and it works. I have a last question, in the Generator you can set the LED pin, what must i set there? Sorry my english is bad.

  140. Phil June 14, 2012 at 5:20 am #

    That’s a problem with the compiler uploading to the board, I suggest a reboot of both the PC and the arduino controller.

    Have you managed to send anything to the Arduino yet?

    • Dirk Wohlrabe June 14, 2012 at 6:39 am #

      Sorry, another question: Which Picture have the best solution for the wall? Pixel?

  141. Phil June 14, 2012 at 4:43 am #

    Yes that’s right, but if you are still having problems then I would go to the Arduino-022 version, you won’t lose any functionality and the two versions can co-exist

    • Dirk June 14, 2012 at 4:57 am #

      Ok, i have do this , now i can compile, but upload says:

      Binary sketch size: 20224 bytes (of a 126976 byte maximum)
      avrdude: stk500_getsync(): not in sync: resp=0x00
      avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

      • Michael Ross
        Michael Ross June 14, 2012 at 11:15 am #

        Hi Dirk, I apologize for the delay in getting back to you. I had just gone to bed it looks like when your first email came in and I had some errands to run this morning so I am just now getting back to respond. Thanks for helping him out so quickly Phil! :-)

        One note I want to add here, and it looks like you might be experiencing the problem with your first installation, I have had to load the latest Virtual Com Port Drivers to a few computers to get them to work with the Arduino software. I added a note to that effect in the header of this page. The drivers can be found on the FTDI website at http://www.ftdichip.com/Drivers/VCP.htm

        I have also run into a few installations where the drivers had not been loaded for the Arduino board itself and this showed similar errors. You need to make sure the drivers for the Arduino are loaded properly and make sure the VCP drivers are up to date as well.

        Glad you got it going either way! :-)

  142. Phil June 14, 2012 at 4:07 am #

    Did you copy the RGBStrip.cpp and RGSBStrip.h from the 1.076 download over the top of the default libraries?

    • Dirk June 14, 2012 at 4:16 am #

      Hello, the files are LEDStrip.cpp, LEDStrip.h and WConsants.h, i copied to libraries/RGBStrip/
      Is that correct?

  143. Dirk June 14, 2012 at 3:43 am #

    Hello, i use the 64 LED Stripe and the Lightwand Code Generator, the librarys are copied to the compiler, but i can´t compile this. Because the error is:

    C:\arduino\arduino-1.0.1\libraries\RGBStrip\LEDStrip.cpp: In constructor ‘LEDStrip::LEDStrip(int, int, int, int)’:
    C:\arduino\arduino-1.0.1\libraries\RGBStrip\LEDStrip.cpp:41: error: ‘LOW’ was not declared in this scope
    C:\arduino\arduino-1.0.1\libraries\RGBStrip\LEDStrip.cpp:41: error: ‘digitalWrite’ was not declared in this scope
    C:\arduino\arduino-1.0.1\libraries\RGBStrip\LEDStrip.cpp:42: error: ‘OUTPUT’ was not declared in this scope

    What´s wrong?

    • hikaru August 29, 2012 at 6:34 am #

      same problem here :/

  144. Phil June 13, 2012 at 3:38 pm #

    A number of the libraries seem to have problems with version 1.0 of the compiler, try version 022 for now (they can coexist), i did find out what needed to be done but don’t have it to hand at the moment (it was a change you have make in each header file)

    • eric June 14, 2012 at 3:19 pm #

      oh i see, how gotten the code to run on my screen but i changed to liquidcrystal and not that ic2 thing, now i have problem that it dosen seem to find the files, i only get end of bitmaps, that i dont understand what it really means.
      does the sd card have to have someting sepcial about it and what files can i upload to the sd

  145. Phil June 13, 2012 at 2:36 pm #

    the readbitmap.pde in the main download zip is the code for the LPD8806, but the LPD8806 and the WS2801 are very similar, it should just need a change in the post_frame() subroutine. Basically remove the two writeRGB(0,0,0,StripControlx) lines and insert a delay(50) instead and it should work if I remember correctly – sorry not played with this for a few months now.

  146. eric June 13, 2012 at 2:18 pm #

    anyone have code for Digital LightWand + SD + LCD but ws2801 compatible ?

  147. Michael Ross
    Michael Ross June 11, 2012 at 6:54 pm #

    I just released a tutorial to make a Programmable Orb Tool based on the same technology as the Digital Light Wand. http://www.flickr.com/photos/txross/7355905098
    It uses a WS2801 based LED chain and shows how it is connected to communicate using SPI on the the Arduino. There are some supporting photos that show the basics of how the Lightwand code generator uses an image to code the light sequences.
    Cheers! :-)

  148. jesse valaouro June 11, 2012 at 3:40 pm #

    oh i see, how does the software generator work with the program selector then ? :)

    • Michael Ross
      Michael Ross June 11, 2012 at 6:51 pm #

      Hmmm. Not sure I understand what you are asking. Do you mean with the Rotary Switch to be able to select different programs?

  149. jesse June 7, 2012 at 5:27 am #

    and i have another questing 😀 and sorry for being kinda dumb 😛 but is there any documentation about how to get the sd card installed and what i need to add to the code, for it to read the light data files :3

    • Michael Ross
      Michael Ross June 7, 2012 at 6:31 pm #

      Hello again Jesse. I personally have not tried to add a display or SD card into the mix so I really do not know where to tell you to start. I think a few others might have done this in the past, but I dont know if they have made any of their work with these public. Sorry I could not give you a better answer.

  150. jesse June 5, 2012 at 2:08 am #

    have gotten the code to compilate, it was a bugg in the libareries, but i am using the ws2801, and i have problems connecting it to the arduino mega, could sombody explain moar to what pins i shuld connect the four cables, 5+v and gnd is obvius but where shuld i put the 2 last ones

    • Michael Ross
      Michael Ross June 5, 2012 at 9:34 am #

      Hi Jesse,

      Okay… here are the connections that I use for SPI with the WS2801 devices. You should only have 4 connections, one of them is 5v power, one is Ground, the other two I have connected to pins 51 (Serial) and 52 (Clock). The settings in the Lightwand Code Generator are as follows. Select the WS22801 strip. Make sure the Hardware SPI LED Strip checkbox is checked. Under the Arduino Pins section of the settings, the Serial Pin pin needs to be set to 51 and the Clock Pin needs to be set to 52. That should be it for the settings.

      On the main screen of the Lightwand Code Generator, make sure you have the LED Strobe ON Time set to a number greater than zero or you will probably just see the strip flash repeatedly. I usually us a time of .15 seconds if I am going to be walking with the strip. That should get you going. Let me know if you have any further issues with it. :-)

    • jesse valaouro June 5, 2012 at 12:26 pm #

      Hi there ! i have gotten it to work now, i belive, but my colors seems wrong, dont know what can be the error but i tryed a rgbled test program, and it painted blue as orange. :) but iam working on it, thanks Michael :)

      • Michael Ross
        Michael Ross June 5, 2012 at 2:12 pm #

        Hi Jesse, This has come up before. try replacing your RGBStrip library files (LEDStrip.h and LEDStrip.cpp) with the version contained in the 3rd party libraries/rgbstrip directory that Phil placed in the Lightwand Code Generator zip file. See if that will fix the color issues.

        • jesse valaouro June 6, 2012 at 6:21 am #

          ah i see, i have fixed it in the arduino code thoe, changed
          digitalWrite(StripControl1, LOW);
          insteed of rgb :)

          • Michael Ross
            Michael Ross June 7, 2012 at 6:33 pm #

            Interesting. Thanks for posting what you did to fix the problem. :-)

  151. jesse valaouro June 4, 2012 at 12:38 pm #

    so this code the software generates, is is the only code i need in the arduino to get this to work ?
    and when i convert a jpg i get this error when i try to compile it in the ardunio software.

    bas.cpp: In function ‘void loop()’:
    bas.pde:-1: error: ‘pgm_read_byte_far’ was not declared in this scope

    • Michael Ross
      Michael Ross June 4, 2012 at 4:42 pm #

      Hi Jesse, Can you provide some more details about your setup? It would be helpful to know what versions of software you are using for the Arduino Software and also the Lightwand Code Generator. Also, please make sure that you have the Arduino software set up completely including loading the drivers for the Arduino board and the library files copied to the proper folder in the Arduino setup for the Light Strip. Which light strip are you using? What pins on the Arduino is the light strip connected to. Do you have the settings set up properly in the Lightwand Code Generator? There are a lot of variables that can cause issues if you do not set everything up correctly. So the more information we have on your setup, the easier it will be to troubleshoot the problem. :-)

    • jesse June 5, 2012 at 2:14 am #

      iam using this rgb strip

      And i am using the latest ardunio compiler and the latest light software aswell, and when i try to connect the rgb strip with the hardware spi enabled, i dont get it to flash, but when i remove it and use the pins 52 -50 i get the hole strip to blink but not to change color, so i would like some clerification about what pins ishuld use when using the ws2801, and settings for it

  152. Miguel May 24, 2012 at 3:25 am #

    we got it working :)
    the entire strip 64 RGB leds are all working.
    Many thanks for this guide!!

    When I have the results they will be on my blog and on Flickr with a reference to you!


  153. Scottish Dave May 23, 2012 at 6:29 am #

    Hi Phil,
    Thanks for sharing your great software, I would be lost without it.
    I’ve finally finshed building my 2m stick with wireless programming and I’ve been running some test code. I have noticed that if you set the “End Delay” to 0, then the generated code lacks the final blank_strip() command, leaving some LED’s on at the end of the image.

    With End delay set to 0 the last lines are post_frame();

    With End delay set to 1 the last lines are

    See what I mean ?

    PS I’m thinking of running dual strips – can you point me in the directions of any tips on how to use your software with 2 offset strips ?

  154. Jade May 7, 2012 at 5:11 pm #

    Hi there, wonderful tutorial it really helped me to build my light wand. However I am having some slight issues.

    I’m using Phil’s wonderful programme I’ve got my Arduino mega running. I’m using the ground and 5v pin slots to connect the power slot 51 & 52 for the clock and data yet it doesn’t seem to be outputting anything. (I’m using the LPD8806 strip with 66 LEDs’).

    Any advice would be very, very welcome…

    • Michael Ross
      Michael Ross May 7, 2012 at 5:54 pm #

      Hi Jade! Thanks for the comment! :-) I am on the road with limited access to the internet but I wanted to throw some things to check out there while I had a connection. First off, in the DLW Code Generator, go into the settings and make sure you have the right strip length, type, and Pin settings for your set up. I might have another connection again layer or tomorrow so I will check back when I can.

      • jade May 8, 2012 at 7:57 pm #

        Hi Michael again thanks for any help you can give.

        i seem to have fixed the connection issue but when im outputing a image im only getting what seems like one line of the image

        Thanks again


      • jade May 9, 2012 at 5:05 pm #

        I have managed to figure out what the issue was. it appears I needed to set the strobe interval on Phil’s program now that thats done it works thanks for your help.
        If theres any tips you can give that would be great.


        • Michael Ross
          Michael Ross May 10, 2012 at 3:50 pm #

          Very cool! Glad you got it going. I just got back in town from my trip yesterday so I am playing catch up! :-) Work on playing with the timing until you find a time (mainly the strobe on time) that you feel comfortable with. Other than that, it is only limited by your imagination really. Good luck with it and if you have any ideas, suggestions or problems, let me know. :-)

    • Jade May 8, 2012 at 2:25 pm #

      it actualy seems to be working after messing wit it most of last night thank god

    • Phil May 21, 2012 at 3:13 am #

      Hi Jade,

      In short, not from me as I don’t have a Mac!

      But the source code is available if anybody wants to give it a go!.



  155. huck alexander April 26, 2012 at 5:05 pm #

    Your successes in creating such a great tool for light painting really made me think about how I could make the same idea work.

    I posted my achievements on the Instructables forums. My latest version uses 16 blue LED’s. Not able to post photos here at this time. I am having some issues in getting the two analog pins to work correctly using arduino.

    I have my eye out for an HL-1606 now, as your color range is very impressive.

    Thank you for sharing all of your work! Kudos!

  156. Ben April 20, 2012 at 10:45 am #

    love it. could it be possible to have a longer strip but have it in rows that were effectively connected in one long strip to make a screen. I presume each led can be programmed to come on separately and at what ever colour. sorry for repeat but forgot to click the notify me by email of replies

    • Michael Ross
      Michael Ross April 20, 2012 at 11:30 am #

      Hi Ben,
      Yes, it is possible. The strip itself is not that flexible so you would have to cut it and using wiring to make a “U-Turn” with it to mount it like that. Also, you would have to go with an external source of power if you plan on driving a really long strip or keep it running for long periods of time. :-)

  157. leur salaire minimale de l'è„¡tat April 12, 2012 at 9:26 pm #

    Youre so cool! I dont suppose Ive read anything like this before. So nice to seek out anyone with some authentic thoughts on this subject. realy thank you for starting this up. this website is one thing that is needed on the web, someone with a little originality. helpful job for bringing something new to the web!

  158. Michael Ross
    Michael Ross April 5, 2012 at 4:42 pm #

    Here is a general note on some of the HL1606 Strips being shipped out of China. Some of these are being made with 12 volt input as opposed to the 5 volt version used in the tutorial. There are also only 4 connections on the strip as opposed to the 6 connections shown in the tutorial. This strips can still be made to work but you will need to use 8 AA batteries to power both the strip and Arduino board directly instead of a 9 volt battery to power the Arduino and the the 5 volt supplied from the Arduino board to power the strip. The four connections on the strip are labeled D, C, S, and L, and the power is applied to the D, and L connections (D = Positive (+), L = Negative (-)) along with using them for the Digital and Latch functions they are labeled for as well. Hope this helps the next person that runs into this. The 5v version is still being sold as well, so just check the specs for the strip you are ordering before purchasing. :-)

  159. tom April 4, 2012 at 3:58 pm #

    I am having a hard time finding the right type of RGB strips. Do you by chance have the model number? Every time i search for hl1606 it cancels out and just searches for the rgb strip itself. Better yet would you tell me where you can purchase it from? And thank you so much for this tutorial and the inspiration!

    • Michael Ross
      Michael Ross April 4, 2012 at 5:09 pm #

      Hi Tom. The H1606 strip is still being made but I do not think Adafruit.com carries it any longer. They have started selling the more capable WS2801 and LPD8806 strips instead. I am still buying the HL1606 strip in 5 meter rolls but I am not sure were you might be able to find it in shorter lengths. I can sell you a length of it if you would like. Just email me and let me know how much you are looking for and what your shipping address is so I can let you know full cost with shipping. My email addy is MichaelRoss@REMOVETHISverizon.net (just take out the REMOVETHIS in that email address. 😉

    • tom April 5, 2012 at 10:42 am #

      Michael, I tried to send an email but it was sent back to me saying it was unreachable. I did remove the remove this part from it. Any way to email you differently?

  160. is0-mick February 28, 2012 at 2:38 pm #

    I had a similar problem when I was creating the SD + LCD code for my wand.

    I just changed phil’s program by changing the lines that write the colours to the bitmap as it seems my HL1606 strips were wired different.

  161. Evan February 14, 2012 at 2:09 am #

    When importing this BMP into the Lightwand Code Generator, pasting the code it generates into the Arduino 0022 software, then uploading it to the Ardunio, the LEDs render the YELLOW pixels as PURPLE, and the orange ones as red:


    Interestingly… When importing THIS RAINBOW BMP into the Lightwand Code Generator, pasting it into the Arduino 0022 software, and then uploading it to the Ardunio, The LEDs render the colors to be expected, only with slight misinterpretations as it gets darker.


    You can see screenshots of both designs in the Light Wand Generator here:



    • Phil February 15, 2012 at 6:49 am #

      Hi Evan,

      Two things,

      1) It looks like you are using an old version of my program so probably best to download v76 from http://www.wright-online.com/downloads
      2) There appears to be at least two versions of the HL1606 strips out there that have the colours swapped, try replacing your RGBStrip library files (LEDStrip.h and LEDStrip.cpp) with the version contained in the 3rd party libraries/rgbstrip directory of the zip file you have downloaded in step 1 above.



      • Evan February 16, 2012 at 6:07 pm #

        Hey Phil, it looks like I was already using V76, so I just replaced the library files and it works now! Thanks!

  162. Phil February 3, 2012 at 5:25 pm #

    Good point mike i have seen that as well

    • Jade May 20, 2012 at 8:08 pm #

      Hi phil quick question I mainly run a mac based system so I’ve had to install boot camp to a desktop mac we have here but I cant bootcamp my macbook for various reason so my question is is there likely to be a version of your wonderful program that can be used on os x

  163. Phil February 3, 2012 at 5:06 pm #

    Could be :)

  164. Dave February 3, 2012 at 12:57 pm #

    First of all thank you for creating this website – unfortunately I found it after I build my stick….
    I’ve been using an UNO, but have just bought a MEGA to use Phil’s program (with a LPD8806 strip)

    I cannot get the strip to light up when using Phils program – I have tried both SPI and clock/data pins. The strip is not broken – it works with code I wrote by hand but not the code generated by the software.

    My best guess is it have something to do with the LED pin variable you set in the preferences – can anyone tell me what it is for please ?

    Thank you.


    • Michael Ross
      Michael Ross February 3, 2012 at 1:00 pm #

      Hi Dave,

      Can you tell us exactly which pins you have each of the 4 connections on the LPD8806 connected to on the Arduino? Also, which version of Phil’s program are you using?

      • Dave February 3, 2012 at 2:46 pm #

        Hi Michael,

        Thanks for replying so quickly – I have the data/clock set to pins 2 and 3 respectively, The ground goes through the arduino to the strip and the +5v goes straight to the strip. I used the diagram 2/3 the way down this page as an example – http://www.ladyada.net/products/digitalrgbledstrip/index.html.

        • Dave February 3, 2012 at 2:48 pm #

          PS – Sorry, am using the latest version of the software, downloaded it a couple of days ago (after spending 2 days writing my own, much inferior spreadsheet based tool)

    • Phil February 3, 2012 at 4:07 pm #

      Hi Dave,

      Can you confirm if you are using an UNO or MEGA with my software.

      I have only tried a mega with my program but reckon an UNO should work.

      Try a very small bitmap first (50 pixels wide), make sure the clock and data are pins 51 & 52 onn the mega and software is set to hardware spi.

      I fly off on holiday for a week on sunday so if you can reply tomorrowmi will try and help further

      Kind regards


      • Dave February 3, 2012 at 4:29 pm #

        Hi Phil,

        Thank you for sharing your software. I am using a MEGA. I’ll try your suggestion now and let you know how I get on.

      • Phil February 3, 2012 at 4:35 pm #

        hi Dave,

        My last post may have been confusing

        Pin 51 shoulld be data and pin 52 should be clock

        The reasoni suggested less than 50 pixels is to make sure the code generated is less than 64kb in size – depending on the bitmap you can try much larger than 50 pixels wide but until itbiss compiled i have no way of checking in my program.

        Good luck


        • Phil February 3, 2012 at 4:38 pm #

          Excuse my typing the ipad seems to add random characters in my messages!

          • Dave February 3, 2012 at 5:03 pm #

            Sure it’s not that beer you are holding ? 😉

            • Michael Ross
              Michael Ross February 3, 2012 at 5:19 pm #

              It’s okay… Drinking and Driving LEDs is perfectly okay on this blog! 😉 Ha!

        • Dave February 3, 2012 at 5:15 pm #

          Thanks for that – have double checked connections. 51 is data, 52 clock (and validated using my some human generated code) The final size of the compilled program is 6256 bytes, using a 52×52 jpg for input. I have Hardware SPI checkbox enabled, and the “LED Pin” is set to 1.
          I generate the code, copy it into Arduino 1 and send to the mega. The result is the whole strip flashes white every half second ish.

          I tried 2 other images, similar result – whole strip flashes at same interval as before, but the colour of the LED’s varies dependant on the input image.

          The colours do not change between flashes.

          PS Thank for taking the time to help – just tell me to go away if you are busy.

          • Michael Ross
            Michael Ross February 3, 2012 at 5:23 pm #

            One note I want to throw in here… These strips can go absolutely crazy if you are using a 9 volt battery that has discharged a bit. They can really act erratic when that happens so if you are powering it off the USB and it works and switch to a 9v battery and it goes nuts, then that is probably the cause. I have seen this happen to several folks on more than one occasion.

          • Phil February 3, 2012 at 5:23 pm #

            Can you email meboth bits of code (your validation code and my program generated code)and i will take a look in the morning – email is philwright@live.com

            It does sound as if clock and data are wrong way round, so humour me and try swapping them please


            • Dave February 3, 2012 at 5:50 pm #

              Done and Done. Thanks again.

            • Seth June 21, 2012 at 12:18 pm #

              WOW, this thread saved me from pulling the bit of hair I have left out! Thanks so much!

    • Phil February 13, 2012 at 3:41 am #

      NOTE: This was resolved by increasing the StrobeOn setting – basically this was set to zero meaning the bitmap was displayed so fast you couldn’t see it. I recommend a setting of 50 millisends

  165. tiago February 2, 2012 at 10:34 am #

    hi , nice work with the hl1606, the tuturial and all these work that u have done, its amazing .
    im trynig to do something different with them . my ideia is to join the strips, 32 leds each, horizontally, and write letters with them. are u understanding ? xb
    can u tell me how do i conect differente strips of 32 leds and make them work with the same code ?

    • Phil February 3, 2012 at 6:30 am #

      Hi tiago,

      I am not really sure what you mean. You can write letters with just one strip.

      Are you thinking about have the two (2 x 1m 32 LED) strips connected horizontally to make a single 2m wide strip (64 LEDs) that you will move vertically to draw the letters?

      • tiago February 8, 2012 at 4:57 pm #

        im trying to do something like an announcement board , and i pretend to write letters with the strips as i show to phill.
        my problem is how can i adress the different strips on a single arduino MEGA 2560 and how can I through the arduino code,
        light only one specifc led on the strip and another one on different position .
        i have tried to light one led only, and i make it. but when i try to light another one on different position, in the same strip,
        the second led never stays on the place that should.
        thanks very much for the attention and i hope that you understand everything that i wrote.

        • tiago February 10, 2012 at 5:19 am #

          michael , can you give me your email ? its better for me to talk with you by that way.

          • Michael Ross
            Michael Ross February 10, 2012 at 7:38 am #

            Hi Tiago,
            My email address is MichaelRRoss AT Verizon.net. I do think I understand what you are trying to do and I am thinking that what you want to do is doable BUT… you will probably run into memory issues on the Arduino trying to do much with 5 strips of 32 LEDs. Particularly if you want to display a longer message. Now I am certainly no expert at all of this but here are some thoughts off the top of my head.

            Now you can probably limit the colors to very basic ones to help with that but you will still have the problem. Now if you just want to scroll the message across, you may be able to get away with that even more so. But if you you want to change the entire display all at once all the time, you will be bumping into memory issues. You can connect multiple strips to the Arduino. and I am thinking that you can combine the Latch pins on each of them and the Clock pins as well. But each strip will need at least its own data pin.

            You need to think about each strip wotking in this manner. When you send a single command to a strip of two LEDs. the first one gets the command and displays the LED based on the command. The second LED does not have a command yet. When you send a second command, the command for the first LED moves to the second LED and the first one gets the new command. So it works linked together like a chain. To control each of the LEDs on a 32 LED strip, you have to send 32 commands for each change. Unless you scroll like I said above and then you can take advantage of the chain reaction and just send one command each time.

            So… if you have 5 strips, to scroll, you would send 5 commands (one to each strip) then latch them, then the second command to each strip and latch, and so forth. To change the entire display, you will need to send 32 commands to each strip, then latch.

            I hope I am explaining this right and in a way that is clear to understand. Please let me know if this makes any sense or not. And Phil, if you see this, please correct me if you see that I have misstated something. :-)


          • Phil February 13, 2012 at 4:03 am #

            Hi Tiago,

            First of all this is possible. So lets make it happen :)

            I’m short of time today as I have just returned from Holiday so I am going to be abrupt and precise in my comments – so please do not think I am being offensive in anyway.

            1) If you do this as bitmaps you may run into memory issues as mike suggested however I suggest you use a font and draw you text using the font, this way you can have huge text strings. – you can find existing fonts by looking at some of the code written for LCD matrix screens
            2) as mike stated you cannot directly address one single LED in a whole strip (apart from the very first one!), you must write the whole strip as they are programmed serially (one HL1606 chip passing the information onto the next one in the line)- So Create an array of 5 deep and 32 wide in memory – you can then address each LED individual in your code and when you want it displayed write the whole array out to the strips (this can be done very quickly – so don’t worry about performance).
            4) Mike is right about the latching above – Connect all the data signals together and plug into the H/W SPI data port (51 on the mega) and connect all the clock signals together on Pin 52. Use a separate pin for each latch connection.

            Hope that helps


          • tiago February 16, 2012 at 1:30 pm #

            i understand everything ! im going to test all of these new information and i will keep you both up to date. thanks very much to both of you for the help and the availability, im starting to think that i can really do something about this carzy strips ! ahah

            • Michael Ross
              Michael Ross February 16, 2012 at 5:25 pm #

              Cheers tiago!
              Good luck with it! Come back and let us know how it goes or shout if run into any snags! :-)

            • tiago February 23, 2012 at 4:01 am #

              i have sent emails to you explaining the problems that i have. hope that u can help me ! cheers

    • Michael Ross
      Michael Ross February 3, 2012 at 12:55 pm #

      Hi Tiago,

      I am not sure if I understand exactly what you are trying to do as well. I am reading this as though you want to basically make a full LED array to act like a sign instead of a strip for use in light painting. Is that what you are looking to do?

      If you are trying to drive multiple HL1606 strips at once using a single Arduino board then you will be limited by the number of connections you have on the Arduino to address the strip. Also, depending on how many LEDs you are wanting to connect, the board itself will only handle so much in terms of current but you can add an external power supply to handle that. I have pushed it comfortable to 64 LEDs but I don’t feel very comfortable pushing past that without an external power supply with a higher rating. It can be done, to a limit anyway. But it will take different code to deal with addressing multiple strips. You will also be limited by memory on the Arduino unless you work around that through streaming the code to the Arduino or using an additional memory device hooked up to the Arduino.

    • tiago February 8, 2012 at 4:56 pm #

      first of all thank you very much for the help and the availability.

      im thinking about putting 5 strips together horizontally (32 leds each) to make different lines . like this:

      hl1606 —————-
      hl1606 —————-
      arduino mega ——->hl1606—————-
      hl1606 —————-
      hl1606 —————-

      and my idea is to individually light different leds on one strip to write letters.
      sorry about my english, i can’t express myself as i want but i hope you understand.

  166. Miguel De Langhe January 5, 2012 at 12:49 pm #

    Hi all,

    first of great tutorial!
    Also when using the WS2801 strips does this change a lot? I mean for instance the used software Digital Light Wand Code generater seems to be supporting this.

    Do I need to consider other changes? Or can I just follow the pdf?


    • Michael Ross
      Michael Ross January 5, 2012 at 2:55 pm #

      Hi Miguel, Yes, there are some difference between wiring up the WS2801 and the HL1606 strips. The HL1606 strip has 6 connections that you are dealing with and the WS2801 only has 4. This makes it easier. The Spreadsheet program that I created was only for the HL1606 strip but the program that Phil Wright created works with each of the strips. There is some flexibility in the what pins are used on the Arduino board and you would specify the pins used in Phil’s program. The DWL Code Generator that Phil created should work with the HL1606, WS2801, and the LPD8806 Strips. I will see about getting some photos posted as soon as I get some to show the differences in connecting the Arduino with different types of strips.


      • Miguel De Langhe January 6, 2012 at 10:59 am #

        Hi Mike,

        thanks for the explanation !
        This is going to be my next project when my ccfl’s are finished (this weekend). So its going to be ordering every part I need this weekend and then wait untill they arrive ^^
        I will make sure you get to see the finished pictures. (on flickr) And ofcours crediting you and everyone else that has made a contribution to the Digital Light Wand!

        Kind regards

      • Phil January 21, 2012 at 8:11 am #

        Hi Miguel,

        As Mike stated the WS2801 strip only has four connections,
        1) +5v
        2) GND
        3) Clock
        4) Data

        +5v and Ground should be obvious :)

        Data is best going to pin 51
        Clock is best going to Pin 52

        Then in my program just select Hardware SPI and it should all work.

        All the best


  167. Phil Wright December 25, 2011 at 3:38 pm #

    Fantastic James, well done and thanks for putting me up in lights :). Merry Christmas everyone and happy new year

  168. Michael Ross
    Michael Ross December 23, 2011 at 1:32 pm #

    Ha! That is fantastic James! I am glad to see that you got it going! And I love seeing my name in lights! LOL

    I wanted to take a moment to thank everyone for their contributions to this blog, particularly Phil and the things that Mick has done with it as well! You guys are awesome! I also wanted to wish you all a Merry Christmas, Happy Christmas, Happy Holidays or however it is that you prefer it! 2011 has been a great year and I am looking forward to 2012 and the awesome things that we will be able to do with the Light Wand and some other Light Painting tools as well! :-)


  169. James909f December 22, 2011 at 7:04 pm #

    Thanks Guys, still learning and exploring but made this on a beach in Devon, UK. Good work. :)


  170. Phil December 16, 2011 at 10:39 am #

    Just a quick update to say version V1_0_0_75 now supports the Arduino 1.0 compiler libraries – feel free to download it from http://www.wright-online.com



  171. Phil Wright December 11, 2011 at 10:35 pm #

    Hi everyone, i hope you are all getting on well with your lightwands!

    I have just been informed of problem with the latest version of the arduino compiler v1.0 which they have changed the name of one of their standard header files which is causing a number of problems with old sample code and the code the generated by my program, i will update my program soon to work around this, but in the meantime if you are having problems compiling try going back to version 0022 of the arduino compiler and it should all work :)

    Hope that helps


  172. James909f December 5, 2011 at 11:47 pm #

    Thanks Guys, my led strip turned up today so hoping the dev board and other bits come soon. Excited to say the least. Many thanks again for sharing. I can’t wait to get it up and running :)

  173. is0-mick December 1, 2011 at 5:55 pm #

    Hi Guys,
    I’ve just done a few more “tweaks” to the code. If you removed the SD card and tried to send a file, the code would get stuck in a loop (there is a fix posted in the new code, but it’s a problem in the SD library that needs addressing).

    I’m also now fading out the backlight instead of just switching it off, so it looks a little more swish :)


    Is the latest version (1.02 I’ve called it).


  174. Michael Ross
    Michael Ross November 30, 2011 at 6:09 pm #

    Hi Matthew,
    I have a few videos of how the tool is used. They are located here:

    I will get back to you on making a completed wand. I am in the midst of working on starting up a new business (a Photo School) and that is demanding all of my time right now. But I will get back to you.

    @ Mick! Thanks a TON for posting that! I can’t wait to give it a try! :-)


  175. Matthew Malloy November 28, 2011 at 1:54 pm #

    Also do you have any video’s on you creating some of this art, would love to see a making of video of how you go about creating the shots and some effects with the wand

  176. Matthew Malloy November 28, 2011 at 1:45 pm #

    Hi Mike, thanks for the info as you have certainly in a way pioneered this for all of us( with some help from your new found friends of course). I wanted to get some info on how much you charge for a completed 16 wand or 32 . thanks in advance for your time

  177. Hob November 26, 2011 at 7:57 pm #

    Nice one Mick. I might have to try and suss that out at some point. It could make a big difference in the wheelchair DLW activities.

  178. is0-mick November 26, 2011 at 1:53 pm #

    Hi James,
    I’ve uploaded the code here:

    I’ve just added something to turn the LCD backlight off after about 1/2 a second if no keys are being pressed.

    Before this it was on all the time, so I thought it would be better to turn it off to save battery life, and also to stop it being caught by the camera :)


  179. James909f November 26, 2011 at 1:21 pm #

    Hi Guys,

    I found your site the other week and have since been amazed by what you’ve done. I’ve placed an order today for the Development board, 2meters of HL1606 light strip and I know the code isn’t in the public domain yet but also ordered an LCD screen and SD reader. Hehe, I’m already counting down the two week delivery time from China to UK!

    Just wanted to say thank you for all the hard work you’ve put into the project and for sharing it on the web. The end results are amazing and the possibility’s endless. Can’t wait to get it all setup and share the results.


  180. is0-mick November 5, 2011 at 10:56 pm #

    Hi All,
    I’ve build a DLW with LCD + SD card reader, you can see a video of it in action here:


    It reads the files from the SD card and lists them alphabetically, you can scroll through them using the UP and DOWN buttons on the LCD / Keypad shield, and set the frame delay with LEFT and RIGHT buttons.

    The select button, then sends the image to the LED array.

    The LCD / Keypad shield I got from ebay for around £6, and the SD card reader is around £3.

    If anyone wants to have the code to play with, let me know.


  181. Michael Ross
    Michael Ross October 10, 2011 at 7:33 pm #

    Hi Max,

    I was just able to find some more of the light strip that I needed to make a few more of these. I will contact you via email.

  182. Max October 10, 2011 at 7:20 pm #


    Do you happen to have any of these for sale? I’m not sure I have the time and know how for the physical build… But would love to have one of these to play with :) If not, keep doing what your’e doing and hopefully I’ll find some time to make one of my own!


  183. Michael Ross
    Michael Ross September 18, 2011 at 11:51 pm #

    Awesome Phil! I will be there as soon as I receive the parts! Hopefully this wee some time. :-)

  184. Phil September 18, 2011 at 8:01 pm #

    Good news the I2C display, and SPI based SD Card reader and LPD8806 strips are working fine together. I had worried about the SD Card and LPD8806 sharing the SPI bus (hen the LPD8806 don’t support slave select) but the AND gate did the trick brilliantly.

    Just put on a flickr 6200 column bitmap! along with a few pictures of the actual wand itself. http://www.flickr.com/philwright69

    I now need to change my program to work with all this, as it’s going to be quite different when reading in files as I want to be able to select the file and will also have to store the actions, delays etc. differently.

    If anybody else is building this with the sdcard etc. please let me know.



  185. James September 15, 2011 at 11:27 pm #

    Awesome! And I may have found a way to make it all a little more portable. I’ll update when I’ve finished the mod

  186. Phil Wright September 15, 2011 at 8:30 pm #

    Hi everyone,

    I just thought I would give a quick update on the parts i ordered (in the links of one of my posts above) both the sdcard reader and 16×2 line display are working great individually i just need to pull together a menu layout that works well with the lightwand and change the code to read the bitmap from a file. I hope to get this done at the weekend



  187. Michael Ross
    Michael Ross September 8, 2011 at 1:13 am #

    Phil has a website up and running now and the DLW Code Generator is available in the downloads area of his site. Phil’s Digital Light Wand Code Generator: (located in the download area of his website at http://www.wright-online.com

    He will have the latest version available there. :-) Thanks Phil! :-)

  188. james September 6, 2011 at 9:40 am #

    Just spoke to the people at DycoLed…the less are fully addressable, have a built in microcontroller and the minimum space you need between the less is 10mm…just trying to get prices. An easier way to increase resolution maybe?

  189. Phil Wright September 4, 2011 at 5:26 am #

    Hi James

    Yes you can Dual strip the WS2801 strips



  190. James September 3, 2011 at 11:32 pm #

    Sorry, another question….can you dual strip the ws2801 strips? Or would that be too much of a pain to do with phils program? I only ask because I can buy the ws2801 strips in the UK easy enough

  191. James September 2, 2011 at 10:07 pm #

    Phil…could you by any chance convince my wife? We should all rock up to burning man and do a giant ass led strip picture

  192. Phil Wright September 2, 2011 at 9:49 pm #

    I think youre right Mike but hey i think she might be up for burning man next year!
    i mentioned sun + sand and holiday and that was it – booked!

    Hardware SPI is looking good for a Speed increase which willl be needed if also reading from an SD card.

    Thanks very much Mike for the LPd8806 strip, testing is so much easier now and straight away realised the 10ms delay from the adafruit demo is not needed which will help loads

    I will also help mike with all his tutorial stuff around the latest developments as soon as i have it all nailed

  193. Michael Ross
    Michael Ross September 2, 2011 at 5:32 am #

    I have uploaded the newest version of the DLW Code Generator Program from Phil. The link at at the top will get you there. :-)

  194. Michael Ross
    Michael Ross September 2, 2011 at 1:36 am #

    And development times will probably be screaming now too. Phil has been making changes and I have been testing since he didn’t have his own LPD8806 strip to test with. But he has it now!! His wife is probably going to be a “computer widow” for a while! 😉

  195. Michael Ross
    Michael Ross September 2, 2011 at 1:29 am #

    They are not chained together. They actually share the data pin on the Arduino board and use two different Clock pins so they can be triggered separately for the delay. The set up is really not much different than connecting one strip. Only one additional connection to the Arduino board. I will try to make an addendum to the tutorial this weekend to show the schematic. If you will send me an email to michaelrross AT Verizon.net, I will send the latest version of the software to you. I need to get it on this site anyway to make the latest version available.

  196. james September 2, 2011 at 1:21 am #

    Ooo and also…will the legend that is Phil be releasing a dual strip version of his amazing program? Or is the one I’m using now the latest one? Its got options for more than 64 leds

  197. james September 2, 2011 at 1:13 am #

    That’s ridiculously good! I’m guessing there’s no change to the physical side of things? Are you just chaining the 2nd strip to the end of the first? Or is it wired to the arduino differently? You guys are aweome and I’m so grateful for your help in setting my own up. I know wanna do a dual strip…any chance of an updated tutorial I. The future?

  198. Michael Ross
    Michael Ross September 1, 2011 at 11:49 pm #

    Ooops… except for the first one in the comments. That was the LP photo that I used to create the top one. :-)

  199. Michael Ross
    Michael Ross September 1, 2011 at 11:48 pm #

    Here you go James…. This photo and the three below it in the comments were created with the Dual LPD8806 strips. 😉 http://www.flickr.com/photos/txross/6098413825

  200. James September 1, 2011 at 11:15 pm #

    Woop, finally got mine working tonight…although now all this talk of dual strips has got me drooling….any pics of these yet?

  201. Michael Ross
    Michael Ross August 31, 2011 at 10:38 pm #

    LOL Chris, I like the way you think! Traits of a “Ground-Breaking Thinker” there for sure!! :-) It is funny how with all of this, Chris Renfro made a comment about all of this getting to the 1080p High Def one of these days and I had to laugh at just how playing with all of this is, even though ground-breaking in the LP world, somewhat archaic when you compare to technology used in High Def TVs! 😉 When Chris made that comment, I simply thought, well why don’t I just buy a TV and flash the image in front of a camera like a stencil and be done with it!! LOL 😉 Why!? Because THAT isn’t anywhere NEAR as much fun as doing it this way! 😉 That’s why! Ha! But… to address the thoughts… A frame with a sliding rail both vertically and horizontally would do it. Even a motorized one would be better. But they portability starts to be an issue too. But it would still be fun to play with! 😉 And don’t let anyone tell you that thinking outside the box is annoying. I will never think that! 😉 Keep thinkin’ outloud! :-)

  202. Plan - B (Chris) August 31, 2011 at 2:24 pm #

    I was just looking at your latest pics again Mike and they sure do look great. Looks like you have the dual strip alignment sorted. You guys should be pretty happy with yourselves. It’s amazing what you’ve accomplished.

    Anyway, looking at the photo’s I had (yet) another thought. It might be fun to save both a horizontal motion and vertical motion version of the same picture to your light wand. Then maybe using a wall or something to help line everything up, paint one over the top of the other. Alignment would be a bitch, but the cross hatch final image might be cool.

  203. Plan - B (Chris) August 31, 2011 at 1:02 pm #

    I haven’t seen the Dyco’s James, but I’ll definitely check them out. Keep us posted on any details you get back and a price please.

    Thanks for the reply Phil. I didn’t realize you could get the million color strips for as cheap as that. It’s been awhile since checked around and I just tonight realized Adafruit has the LPD8806 strips for cheap as well as a slightly cheaper version of the string lights I posted. (I think they are the same “Pixellights” Sawo has been on about over at LJ’s). The price of the strips definitely makes the strings less attractive, but I still see some advantages in regards to design. Namely, that the string LED’s can be installed anywhere in relation to each other.

    I envision, not just digital light wands, but a modular array of digital light tools. A 5×5 pixel grid orb tool that can flash out letters or shapes or whatever. Different sizes and shapes of programmable light brush arrays that can also be turned on and off by a momentary switch installed on the brush. A larger (expensive) pixel grid tool that could be used to produce 3D, light wand effects (like those cool iPad apps) or even just simple color washes. Basically, any LED tool you can think of could be built with quick connectors and extension wires or arduino/battery pack harnesses and controlled off a single controller. You could have a pocket full of SD cards, each with a slew of different patterns for each individual tool. This may or may not be a very practical setup but the idea does have me a bit excited.

    The strings I posted do indeed use SPI and I believe (not positive) the WS2801 chip. They have an arduino library and example code here: http://www.idolstarastronomer.com/Home/char-total_control_lighting
    Now I don’t have a latest, greatest copy of your program yet, but I thought it was rebuilt at one point to include the WS2801 chip? If so, it should work with these string lights already, correct? I’ll hit you up on Flickr for a copy of your program right now, if that’s ok with you.

    I’ve played around a bit with the software that comes with these strings. It is unable to break down a bitmap into lines and replay it as your software does for the light wand. What it can do, is let you design a custom wire routing layout for any sized LED grid array. It can then display imported video on your LED array. I don’t think video import is needed but, would it be possible to update your program so it can display imported bitmap images on a custom routed and sized, LED grid? Maybe be able to put those bitmaps in sequence, set a frame rate, and play them back? Similar to the way your software plays back the individual “lines” of a bitmap now.

    My main interest in the controller I posted above was the SD card feature and buttons. After seeing the new arduino parts you ordered Phil, I’m thinking that controller is still expensive and now unneeded. I can’t wait until you have those parts incorporated into your project. Please do make sure to bring it to show and tell.

    Anyway, big thanks to everyone for discussing my idea’s with me and sharing your own. If my thinking out loud gets annoying, please let me know. Lol.


  204. James August 31, 2011 at 9:47 am #

    Have you seen the DycoLed’s? They are addressable and have a controller built into them. Ive emailed them (they are in germany) to find out a bit more information and get a price per LED

  205. Phil August 30, 2011 at 4:09 pm #

    Hi Chris,

    Coming back to your links I’ve had a good look and I’m not sure if I could output code that these controllers use – without a lot more digging, also as they give you free software I’m not sure it is worth it anyway (I have looked at their software and it looks comprehensive but i’m not certain how to use it!).

    On the other hand connecting their LEDs to the Arduino and changing my code to drive them I reckon would be pretty simple but at $100 for 50 LEDs it would be expensive compared to lining up 64 LEDs side by side (LPD8806) for $60.

    To know for sure if we could drive them we would have to buy some and find out what chips are used on the LEDs, but I reckon it is just some form of SPI addressable chip (same as WS2801 and LPD8806).

    For those of you interested these are the components I am working on next:

    LCD Display

    SD Card reader



  206. James August 29, 2011 at 10:50 pm #

    Well this is all getting rather exciting isnt it!….I was looking at sd shields for the arduino to see how easy it would be to increase memory on the board

  207. Phil Wright August 29, 2011 at 9:36 pm #

    Hi Chris

    I have just (in the last couple of days)ordered both an SD card reader for £4 and an lcd screen with keypad for £6 from ebay so hope to add an easy menu system on the arduino to select the bitmap you want to run from an SD card. If i get It all working it will also give the possibilty to change things in the field like delays and speed etc. I will let you know how i get on but it may be a week or so as they are comng from china. I will take a look at your links now.



  208. Plan - B (Chris) August 28, 2011 at 12:44 pm #

    Well I’m glad to hear you enjoy my ramblings on your project even if I am a step or two behind where your at in development terms. I enjoy trying to contribute anyway I can. I got another one to throw at ya, if your interested.

    It’s funny you mentioned the Blink M’s again. I stumbled across these tonight while hunting for cheap for EL tape. They’re kinda like Blink M’s but prewired and at 2 bucks a piece instead of 12. You could line the bullet style packages in a row with with only millimeters between each LED.


    Check out the video at the top of this page for a quick run down.


    These strings can be controlled by arduino (they have code on the site) but it also looks like the mid range controller and software they sell might almost work for light painting right out of the box.


    It’s more money then an arduino but it has a SD card slot for extended memory and buttons to select different programs and speeds. Perhaps Phil, would it be possible for you to modify your software to output code on a SD card that this controller can read?

  209. Michael Ross
    Michael Ross August 27, 2011 at 3:34 pm #

    Hi Chris! Thank you very much! :-) You know the old saying… “Great minds think alike!” 😉 I haven’t really had time to give the entire story with all of the photos that I have been posting, but you are correct, the delay has been the latest thing that we have been focused on. Those shots that I posted are really just showing the the progress that has been made in the color range and the offset delay so far. Phil and I have been working on different ways to deal with the delay for the dual (side by side and offset) light strip. I think we hit a point last night with a lot of testing that we are going to have to take a bit of different approach and try to delay based on a fraction or percentage of the time the LED’s are lit themselves.

    Phil and I have also tossed around some ideas in the extra memory area and there are a few different possible approaches. One is to have an SD card slot attached to the Arduino and either have a way to trigger a download of a new program from the memory card to the Arduino. The other is to possible extend the memory of the program area in the Arduino and actually make the programs selectable as you said.

    Phil’s program is definitely a masterpiece and he has put a lot of long hard hours into making it successful. On top of this, Phil has been having to do all of his testing through me so far so it has been a bit of long process in communicating changes and problems that have come in during the evolution of this. I have been trying to get some of the LPD8806 strip to him but the postal service is making me want to “go postal” on them right now! But that is another story altogether! 😉 Many kudos to Phil for his work and I definitely want to get to meet him in person some day and have the pleasure of doing some LP with him and buying him a few brewskies as well! :-)

    By the way… Even when I first put the original strip together and got it working a few years ago, the wheels were turning in my head about resolution and color range. In a box, under my desk at home, I have parts for two additional versions of light strips. One of them is based on the BlinkM module (which is a SUPER expensive way to go!), and I can’t even remember what the other one is! Ha! But these newer Light strips sort of let me shortcut the work on those anyway, so I will probably end up using those parts for other ideas I have brewing as well. 😉 I am off to shoot a wedding in a bit but keep throwing ideas out there man! All of this has totally taken off and evolved even more than I dreamed it would in a very short period of time! It has been a great thing to see! :-)

  210. Plan - B (Chris) August 27, 2011 at 2:21 pm #

    I just had another thought that might help smooth out the the image of the 2 strip method discussed above. Above you mention that the 2 strips can be controlled indecently of each other. In programming could you add a slight delay to the second strip so that when moving, it fires at the same location in space that the first strip fires? This might help clean up Trogdor’s legs.

  211. Plan - B (Chris) August 27, 2011 at 6:52 am #

    Things seem to be progressing nicely in light wand development world. Color range has been improved with the new strips that are available and programing has been made as simple as pie with Phil’s great software. Seems to me the only remaining issues are resolution and memory capacity.

    Mike, I see from your latest photos you are maybe trying a dual strip, side by side approach for better resolution. While it seems to work great, the staggering issue I stated above is apparent. (Trigor’s legs) What are your thoughts on the results? Do you hope to improve from here?

    I’m thinking maybe making your own strip might be the best option for best resolution. Use the same components and schismatic as the strips but assemble on custom printed circuit boards. Have the LED’s right together in a row and the resistors and chips off to the sides instead of in between the LED’s. If your custom building, you could also use smaller package LED’s to increase the resolution even further. The boards could be designed modular like the strips so you can just add more boards for a longer wand. I know there are quite a few companies that offer software and service for designing and producing printed circuit boards but they may not be cost effective for a one off project.

    As for memory capacity, I have no real ideas on how to expand it.
    I do think it would be cool if you could keep your whole library of patterns loaded on the device and scroll threw them with a couple buttons and an LCD screen.

    Anyways, those are just more of my rambling thoughts on this awesome project. Just wanted to add great work fellas and I’m looking forward to future developments.

  212. James August 26, 2011 at 11:45 pm #

    Phil, truly…if im ever up your way I owe you a few pints

  213. Phil Wright August 26, 2011 at 8:30 pm #

    Hi James, in short no, the LED strip has no control over individual leds from what i can tell they are all set to the same colour



  214. James August 26, 2011 at 12:36 pm #

    Just found this


    could it be a way to increase the memory on the arduino to 512….might enable longer runs on a 64 led strip

  215. Phil Wright August 25, 2011 at 9:00 pm #

    Hi James its very simple, all you do is click on the bitmap where you want it to pause and a dialog box pops up asking you for the pin that you have the switch connected to and two values to set a range you want the switch to be reading

    I’m not sure which version mike has available on here but if you send me a message on flickr i can email you one of the latest versions



  216. james August 25, 2011 at 12:15 pm #

    Hey meant to ask…the pause in your program so that you have to turn the switch to get it to carry on….how easy is the coding for that? Should I wire in a 6 way switch to do this?

  217. Michael Ross
    Michael Ross August 22, 2011 at 3:44 pm #

    I am not so sure that the strip itself will go through too many times of being folded and unfolded. That thought crossed my mind but the strip is only “flexible” to a point. :-) BUT… if you CUT the strip at the fold and then used some stranded wire or ribbon cable to connect the two pieces back together, it would probably handle that for a while longer.

  218. James August 21, 2011 at 7:45 pm #

    Im wondering how much of a chore it would be to hinge the wood….to essentially fold it down. Obviously youd have to un-ziptie…and then reziptie….hmmmi shall think on this lol

  219. Michael Ross
    Michael Ross August 21, 2011 at 2:24 pm #

    No problem at all. Yes, portability is definitely a problem with the 64 LED version. The two that I originally created are the two I use the most and they are a 16 LED version for doing more Highlights and patterns in general LP shots, particularly quick portrait shots. That is why I added the 6 position switch to it so that I could take advantage of the memory in the Arduino and have 6 patterns to choose from on the fly. The other was a 48 light strip that is just long enough to get some good size out of it and resolution too, but not be so long that it was a pain to transport.

  220. James August 21, 2011 at 2:17 pm #

    Thats what i originally thought…but I think i then overthought it and confused myself! lol I love the idea of the 64 led one…with its clearer picture….but i also love the idea of a smaller one for portability….decisions decisions! Thanks for your help guys i really do appreciate it

  221. Michael Ross
    Michael Ross August 21, 2011 at 2:06 pm #

    Hi James, Maybe I can help answer this. The LEDs the HL1606 and PD8806 Strips are spaced at about 3.1cm apart. So a 64 LED strip would be 2 meters long. A 32 LED strip is 1 meter, etc. So when you are talking about “Resolution” here, the more LEDs you add to the mix, the better the image will be rendered because it has more “Pixels” to use in doing that. But the drawback is, the strip is REALLY long! :-) Does that makes sense?

  222. James August 21, 2011 at 12:05 pm #

    Sorry if im being stupid here…..So the strip your using essentially has the same resolution as a 64 led one? Because the leds are 3cm apart?

  223. Phil Wright August 21, 2011 at 7:44 am #

    Hi James, i have the ws2801 stick with 32 leds, i’m still learning on how to get the best out of it. A 64 led version will give you a two meter high lightwand so you can fit more pixels in however the resolution with LEDS approx 3cm apart will be the same. Mike has used a diffuser which makes quite a difference by increasing the spread of light from the LED reducing the appearance of stripes, i have one on order which should arrive this week and will post a with/ without diffuser picture for you to see the difference. Mike and I are also working the best way to increase resolution with 64leds per meter so watch this space!

  224. James August 20, 2011 at 11:14 pm #

    Ah ya know what….after having a look at your program…im going to have to go for a 64 led version arent i! It just looks alot clearer lol

  225. James August 20, 2011 at 11:03 pm #

    Ahhh, im with you! I think anyway lol. The simpsons one, is that with the new higher res led strip? Or the original one

  226. Tyson F. Gautreaux August 20, 2011 at 11:16 am #

    Thanks a bunch for sharing this with all people you really understand what you’re speaking approximately! Bookmarked. Please also discuss with my site =). We can have a hyperlink exchange contract between us!

  227. Phil Wright August 20, 2011 at 9:15 am #

    Hi James, yes 1 meter Is 32 leds

    you can only actually run one program at a time on arduino but what you can do is split that program up into sections. For instance with my software i have put a pause after each bitmap sequence that waits for me to turn the six pot switch. See here for what i am on about

    The program http://www.flickr.com/photos/philwright69/6050229735/
    The result http://www.flickr.com/photos/philwright69/6050776574/

  228. James August 19, 2011 at 10:45 pm #

    Thanks Phil….my plan is to build a 32 led one to start with ( I think thats how many is on 1 meter?) So with the upgraded memory on the mega board…what are the chances of being able to program a couple of patterns onto it….like with the 16 led version. Sorry if im sounding really stupid,

  229. Phil Wright August 19, 2011 at 4:06 pm #

    Hi James

    Yes i have the mega board with 256kb at the moment and with a 32 led strip you can fit in approx 500 to 1000 columns depending on the complexity on bitmap

    Hope that helps


  230. James August 19, 2011 at 2:19 pm #

    Phil….you say the new strip takes up more memory….how about the new upgraded version of the mega board. Seems like it has 256kb of memory, so would that be able to cope with longer runs?

  231. Phil August 11, 2011 at 8:12 am #

    Don’t know if you have noticed but Adafruit have scrapped the HL1606 and now got a strip with an LPD8806 that can display 2m colours and is the same price as the HL1606 – I can feel more programming coming on!

    Just a bit of warning to everyone though,

    1) as the HL1606 only had 9 colours you easily do long runs with the memory on an Arduino. With the WS2801 and LPD8806 you are likely to use significantly higher amounts of memory if you want to display complex colourful displays (as much as 5 to 10 times as much in my testing).

    2) The new strips use more power than HL1606 and will need a separate power source to the 5v output of the Arduino. A 1m strip = 2Amps

    hope that helps


  232. Michael Ross
    Michael Ross August 7, 2011 at 11:59 pm #

    Okay…. Here is the latest update. A few of us have been testing Phil’s Digital Light Wand Code Generator and I can’t say enough about how fantastic this tool is! So.. I am going to rearrange things at the top of this page and put all of the links and files in order. For those of you that have a Digital Light Wand and have NOT tried out this tool, I would recommend it highly over using the spreadsheet. Much Much easier! :-) Thanks again Phil!

  233. Phil August 3, 2011 at 7:04 pm #

    Hi Michael

    I have now added a bitmap editor to
    my program I just need to know if it works. I will happily share this with everyone if I can get some testing done first.



  234. Michael Ross
    Michael Ross August 3, 2011 at 6:39 am #

    Oh!! and I am going to try to make a video of how the spreadsheet is used as well this weekend! I know that there some others that have been working on some additional software to make the graphics and text part of this much easier. So hopefully they will share the programs and this spreadsheet method will be obsolete soon! :-)

  235. Michael Ross
    Michael Ross August 3, 2011 at 6:26 am #

    Here is a the Latest Excel Spreadsheet! It will work with 16, 32, 48, and 64 LED versions of the HL1606 Strip. Please read the HELP text since the use of this spreadsheet differs in its use than how it is explained in the written tutorial. It also has error checking to find the most common problems. Please let me know if anyone has any problems with it.

  236. batmkana August 2, 2011 at 9:38 am #

    Hi Mike,

    Thank you for sharing your knowledge … this is enormous for LP community !

  237. Phil July 31, 2011 at 9:49 am #

    Any body around that can test a bitmap to lightwand code that I have written for Windows?

  238. Jake July 28, 2011 at 7:44 pm #

    Hello there Michael! This thing looks great. I have a few questions though. I am having trouble finding the 16 LED spreadsheet version and can’t edit the 48 LED version without a password, would you be willing to provide both? I’d also recommend adding these links to your tutorial.

  239. Michael Ross
    Michael Ross July 25, 2011 at 2:42 am #

    One more thing… I am working on creating Excel spreadsheets for all of these lengths and will be posting them with the rest of the links above as soon as I have them completed. jah~ has also created a version in Numbers on the MAC (and he has also come up with a MUCH more efficient way of doing it as well) and I will be posting his 32 LED version of that also! Thanks jah!

    And soon to follow will be a version of all of these for Open Office as well for those of you that do not have Excel or Numbers!

  240. Michael Ross
    Michael Ross July 25, 2011 at 1:40 am #

    Okay… Since I can’t really order a bunch of parts without some sort of commitment, I am going to keep this simple. I am not going to sell fully completed Light wands with the exception of the 16 LED version. I will sell the rest of them in 32, 48, or 64 length versions but they will be just the light strip with the wires soldered to them, the Arduino board and the power pigtail for connecting and plugging in the 9 volt battery. This is all that is needed to make them work and the only thing you will have to supply is a wood strip to mount everything to and some wire ties or tape to hold it all together. Simple enough. This will also keep shipping costs to a minimum since the light strip can be rolled up and it will not take a long thin box to ship which is extremely more expensive than a small regular size package.

    Without commitment for several of these, I will not get any price breaks on the parts so here is the cost breakdown if you want to purchase one from me partially assembled. I will sell the light strips in the following lengths and since there is not a lot work involved in putting together a basic one, I am not going to just make kits available. The 16 light version will include everything with the rotary switch to allow switching between 6 different programs (I am probably going to change this to 12 different programs now since there is more memory on the newest Arduino board) and also a push button switch and project box to house the Arduino board. This one takes a quite a bit more time to build but since it is shorter, shipping will not be as bad as shipping a longer one and it is a lot more flexible for adding highlights and short words or sayings to an image.

    Contact me for pricing

    As soon as I get enough commitments to order at least a 5 meter roll of the light strip, I will get them going.
    Email me at MichaelRRoss AT Verizon.net and let me know if you want one of them, which version you want and what the shipping address will be if you are interested.


  241. Michael Ross
    Michael Ross July 23, 2011 at 5:01 pm #

    Chris (Plan – B): Yes, There are a few ways the resolution can be handled. One is by putting strips side by side and the other is to bend the strip so that the LEDs end up side by side. (But then mounting becomes a little more of an issue. Two strips could actually be wired to the Arduino board as well and controlled independently of each other but the program would definitely have to be modified for that as well. :-) I did find out in the midst of all of this though that the Arduino Mega board has been replaced by the Arduino Mega 2650 which has TWICE the amount of memory that the original board did. I don’t think memory will be an issue in driving two strips or one with 96 LEDs even. I am sure it can go more if the coding was made a bit more efficient.

    Beav: I am going to try to update the spreadsheet this weekend and get some other versions out there. Thanks to John (jah~), he has come up with a much easier way to deal with the spreadsheets and I am going to adapt them to his method. THANKS JOHN!! :-)

  242. Beav July 23, 2011 at 3:39 am #

    Mike, first of all I love the work you did on this,,,,Just Great! I plan on trying this out as soon as I have one built.

    On another thought I am having issues with my excel program, would you have a generic file that I could get? Just so I could have the basics there. I would greatly appreciate it.

  243. Plan - B (Chris) July 21, 2011 at 9:15 am #

    I just read your interview over on LPP.com and really enjoyed it. I’m glad to see your project is getting the acknowledgment it deserves.

    I noticed in the interview you mention you’d like to increase the resolution of the tool and this is something I’ve been pondering myself. I was thinking an easy method might be to just use two equal lengths of strip, side by side and wired together to make the U-turn at this top of the tool. Then the strips could be fastened to stagger out the LED’s essentially doubling your resolution.

    Your excel sheet output would have to be changed to accommodate the new LED layout. In this set up the 1st or 2nd LED from the bottom of the tool / excel sheet would actually be the last LED in your wiring / programing chain. (hope that made sense.) I’m not sure but I think that should be fairly easy???

    A problem this idea may have is the program space required for twice as many LEDs? (It sure would be cool if there was a SD card shield for arduino that would let you store mass amounts of program data. It seems to me that they can only write to SD for data logging and not read from them.) Another issue may be that the two strips would be slightly staggered horizontally. With the LEDs not in a perfect straight line, sharp and straight edges in your photo results might look a little rough.

  244. jah~ July 19, 2011 at 3:53 pm #

    FYI – One meter = 32 LEDs.

  245. Plan - B (Chris) July 16, 2011 at 7:09 pm #

    Here’s another option to buy the strip at different lengths.


    Based outta Canada but they do ship internationally.

  246. Evan July 15, 2011 at 2:08 am #

    The best! Thank you!

  247. darren July 14, 2011 at 7:42 am #

    Wow.. this opens up a lot of doors.. Thanks so much for sharing Mike! Incredible innovative work.

  248. Michael Ross
    Michael Ross July 12, 2011 at 12:38 am #

    Thanks everyone! :-)

    Lee, you can find the HL1606 RGB LED strip at the following link.


    I think they sell it in 1 meter lengths.

  249. Lee July 11, 2011 at 6:55 pm #

    Great tut! I’ve been trying to find the light strip… I looked on DealExtreme.com but I’m having trouble deciphering from the pictures if they use the same chip…

  250. Dovepistil July 11, 2011 at 4:45 pm #

    I can not thank you enough for the obviously ENORMOUS effort you have put into sharing your creative techniques with us in cyber land. Your giant .pdf is clearly a labor of love. It was very thoughtful of you to thank its “editors”.

    I hope that your efforts here will be the genesis of a community of light painters supporting each other as you have so lovingly supported us. I would site jah’s post as a shining example of such support (sorry for the pun).

    Thanks Mike for taking so much of your time to share your creative efforts with us. You give the internet a soul.

  251. jah~ July 11, 2011 at 2:40 pm #

    First, let me say this is really appreciated Mike. The level of effort that has gone into this project shows and you have made it accessible to the average user. Also, your spirit of sharing is commendable. This has been much anticipated and I think I speak for all the LP community in that we can’t thank you enough.

    I didn’t see any mention of where to get the supplies so I’m adding some URLs:

    Arduino board: http://www.hacktronics.com/Arduino/Arduino-Mega/flypage.tpl.html $60 US

    Custom box: http://www.hacktronics.com/Arduino/Arduino-Case/flypage.tpl.html $13 US – if you don’t want to cut your own USB and power slots.

    Boards seem to range from about $50-75, but I wanted to combine the box and board for cheaper shipping from hacktronics.

    I already have some RGB strips.

    The rest: Radio Shack.

    I’ll let you know how I fare. I’d encourage others to post their suppliers if they find cheaper, reliable sources.

    Thanks again Mike!

  252. Michael Ross
    Michael Ross July 10, 2011 at 7:01 pm #

    The DIGITAL LIGHT WAND Tutorial is now complete!!!


    (aka The Programmable Light Strip)

    Alright Everyone! After some long hard hours creating a VERY detailed document on how to do this (and creating a How To Video as well!), here it is, as promised! Many have asked me how this was done over the past few years and I quite honestly did not have the time to spend with many individuals in explaining how it was done or supporting any problems that might have come up with others trying to follow a quick how to lesson so I was hesitant about getting any information to anyone. Now… With the Help of Blacklodge, Dennis Calvert, and Garnatha as my test subjects and getting valuable questions and feedback from them during the process, I have now completed the tutorial to a point where it is ready to show everyone how it is done.

    Here is a VERY LARGE (~30MB!) PDF document that details everything including High Res photos to show the details as well.

    Other Files and Reference Links:
    1) The 48 LED Spreadsheet to draw the image and generate the code for the Arduino (See below for newest version)
    2) The Arduino Website to download the Arduino Software
    3) The Library files needed to communicate with the HL1606 RGB LED Strip

    *** Here is a the Latest Excel Spreadsheet! It will work with any length of the HL1606 light strip between 16 and 64 LEDs! Please read the HELP section since this will differ a lot from how the use of the Excel Sheet is explained in the written tutorial

    *** Additional info can be found in the LIGHT JUNKIES Group on Flickr in the discussion tread about this tool.

    And here are videos of showing the assembly of the 16 LED – 6 program version of the DLW!

    Part 1

    Part 2

    Part 3

    Part 4

    ENJOY!!! And please let me know what you think about it all! :-)

    • Miguel May 22, 2012 at 1:55 am #

      We got our equipment and now we just need to get the code to get working :)

      Thanks for the great tutorial 😉

    • Dirk June 14, 2012 at 3:40 am #

      Hello, i use the 64 LED Stripe and the Lightwand Code Generator, the librarys are copied to the compiler, but i can´t compile this. Because the error is:

      C:\arduino\arduino-1.0.1\libraries\RGBStrip\LEDStrip.cpp: In constructor ‘LEDStrip::LEDStrip(int, int, int, int)’:
      C:\arduino\arduino-1.0.1\libraries\RGBStrip\LEDStrip.cpp:41: error: ‘LOW’ was not declared in this scope
      C:\arduino\arduino-1.0.1\libraries\RGBStrip\LEDStrip.cpp:41: error: ‘digitalWrite’ was not declared in this scope
      C:\arduino\arduino-1.0.1\libraries\RGBStrip\LEDStrip.cpp:42: error: ‘OUTPUT’ was not declared in this scope

      What´s wrong?

2 Trackbacks

  1. […] Read more about the Digital Light Wand. […]

  2. To view the entire Digital Light Wand tutorial visit Michael’s website HERE

Post a Comment

Your email is never published nor shared. Required fields are marked *


Protected by WP Anti Spam