LED Stage Lighting (Project Feasibility)

Hi all,

I’ve been challenged with the task of dressing up a stage. The budget I’ve been given is small; I could easily get some L.E.D. cans, but I truly believe I could get more bang-for-buck if I took on a D.I.Y. project. I’ve heard of Arduino before, and I’ve seen some of the neat projects some people have done, but I’m not too sure of its limitations.

The space I need to dress up:
Stage back wall, 9 metres width, and 2 metres high (stage floor up to the bottom boundary of projector screen).

The idea:
Purchase eight of these http://bit.ly/uKPJbX
Wire them into pairs, two 5 metre strips per channel, four independently controllable channels. Run a 30 metre long 16 core cable from the stage to the lighting desk to both power and control colours.
Make a controller box with four channels.
Each channel with controls to:

  • Switch on and off
  • Press-to-activate button switch (this is to allow the user to pulse / strobe the lights)
  • Hue control dial (think of Hitting CMD / Ctrl + U in Photoshop)
  • Brightness dial
  • White level dial (a way to manually fade all colour out, this should override 'Auto mode')
  • Button for auto mode (to automatically fade through all colours of the spectrum ref: 3 Mobile Logo - YouTube) If Depressed = operating in auto mode. If pressed again = check Hue dial, white level dial and brightness and fade quickly to those settings
  • Speed control for auto mode (speed up or slow down how quickly the shade fading occurs)

Let me know if you’d like to see some mockup sketches.

All of these dials and switches along with the L.E.D. strips would be wired into one, or four Arduino project boards.

The questions:
Can this be done?
Can this be done with just one Arduino, or would I need one for each channel?
Which Arduino should I select?
Where do I start looking?
Is anyone interested in making this a group project?

Thanks in advance for your feedback.

It's do-able. Doesn't sound too difficult.

Although I can't say whether those LED strips will give you the brightness you need for your application, the project is certainly feasible.

As you've described it, the controller will be operated live. In that case, you should probably use potentiometers for the fade and hue controls. Work out the total number of analog and digital pins you need, then that determines whether you can use a single Uno or similar, or a Mega or four Unos instead.

Theatre lighting systems are often designed for setting up pre-programmed sequences, and during a production the operator selects when to advance to the next sequence. If you want to build that sort of system, then it may be better to use rotary encoders for the fade and hue controls, along with an LCD display to show the current settings. You can use one set of controls for all 4 channels, because you don't need to adjust all four channels simultaneously, you can do one at a time and then store the result as the next step in the program. You can also use a single encoder to adjust different values depending on what mode the unit is in.

You might to use a combination, i.e. preprogrammed sequences + facilities for making live adjustments. The most important consideration is to get the human interface right. I suggest you discuss this with the person who will be operating the unit, especially if he/she has used this sort of kit before.

Hey, wow, thanks for getting back to me so quickly!

magnethead794:
It's do-able. Doesn't sound too difficult.

Fantastic! Considering myself, and the other guy who are taking this project on have no Arduino experience. We’re also going to be the sole users and eventually, the trainers. That should answer your question dc42; we’re tailoring a shoe to fit our own foot (metaphorically speeking).

dc42:
Although I can't say whether those LED strips will give you the brightness you need for your application, the project is certainly feasible.

Stage Sett-up:
Here’s a picture of the stage taken from this morning’s Christmas production.

The auditorium is ‘cozy’. We’ve actually already purchased a strip of blue LEDs. You can see them shining through the Perspex around the drum kit.
This is what I’m imagining with the lighting setup.

Now picture that shining through stage smoke…
You should come to something like this…
http://bit.ly/tQfRU7

Controller Desk:
This is what I have in mind for the controller desk.

An hour or so of drawing this up in Photoshop has given me some time for more ideas. For one, you can see a link switch. If the link switch between channels one and two is on, channel two will be controlled by the channel one settings. Likewise four will be controlled by three if the switch between three and four is activated. I’ve also added a ‘Master’ channel. If the Master ‘Take Over’ switch is thrown, ALL channels will follow the settings on the master channel. I think an LCD display may be a bit advanced? I’m not too sure what data I’d have it display. I’ve tried to make the desk layout as logical and fool proof as possible. Maybe V2 will have programmable presets :smiley: However for now, I’ll probably leave it out unless you can convince me otherwise :wink:

Questions:
Is this still do-able?
Is this a job for a single Mega, as apposed to four Uno’s?
Latency, keeping in mind that I’ll want to be able to tap the strobe button to a beat from live music; will there be any latency?

Moving forward:
Where to from here?... I have a logical mind, I can usually understand coding syntax once I have the code – but I can’t write it from scratch. What I was hoping to find perhaps users, or an archive of code, that would be able to do parts of this project. Then I’d mash it all together whilst teaching myself. Are there any places you would recommend I should look at?

Thank you kindly.

(EDIT)
Just found this:
http://www.ladyada.net/wiki/products/rgbledstrip/index.html
Not a bad way to start :wink:

bokaboi:
This is what I’m imagining with the lighting setup.
http://digibeno.sharkserve.com/StageDesign.png

So you'll be mounting the strips on the back wall then? That could come in handy if you can punch through the wall and run cables either inside, or behind it.

bokaboi:
Controller Desk:
This is what I have in mind for the controller desk.
http://digibeno.sharkserve.com/ControllerBox.png
I’ve also added a ‘Master’ channel. If the Master ‘Take Over’ switch is thrown, ALL channels will follow the settings on the master channel.

Consider the possibility of having the master channel, not only take over color, but also have the ability of taking over the "current settings" as is and controlling brightness/gamma as it were. For example, if you have a specific setting already in place (take your own stage design picture in mind) and simply tell the master to dim them, and not override the color as well.

bokaboi:
I think an LCD display may be a bit advanced? I’m not too sure what data I’d have it display. I’ve tried to make the desk layout as logical and fool proof as possible. Maybe V2 will have programmable presets :smiley: However for now, I’ll probably leave it out unless you can convince me otherwise :wink:

It depends on what you'd want to display on the LCD, and who is it for. If the person (or persons) driving the light booth don't have a clear view of the stage, an LCD will come in very handy. On the other hand, if they can see the stage, even when there are a hundred people in front of it, then it comes down to what that person needs to see that can't otherwise be done unless they are on stage, next to the strips. Though simple things like 'STRIP 1 : ON|OFF', STRIP 2 : ON|OFF' just to indicate whether they are on or off might be fun. During day time when it's hard to see whether a particular strip is completely off, or whether it's on at 1%, a visual indicator on the LCD panel might come in handy. You could also wire in your smoke machine to see whether it's on, heated, and ready, out of fluid, etc., etc. LCDs have their place in a project, you just have to figure out what for.

bokaboi:
Questions:
Is this still do-able?

Absolutely.

bokaboi:
Is this a job for a single Mega, as apposed to four Uno’s?

That would depend on how you want to control the strips. I have done both. If I take a single Uno clone (basically the 328P chip), I can wire 10 individual strips to that (10 LEDs each without any additional current boosting hardware) and bit bang my way through them and still get great results. On the other hand, that severely limits what else I can do with that one single controller, like adding control lines for something like your control deck. At that point I have a choice of either sticking with the 328P and just use more of them linked together, or move up to a 1280 or 2560 (which is the Mega realm).

Also, it would depend on the specific strips you plan on getting, whether they are simple RGB full color strips, or whether they are RGB addressable strips. The difference is, the first one will display one color across the whole strip, while the other allows you to display different color on each individual pixel on the strip. The first one takes very little to do, where the second one needs a bit more oomph to drive. For an example of what you can do with addressable strips, here's my latest project where I have 10 328Ps working in tandem, each one has 2 strips attached. The reason they're 10 of them, and not a single one, or maybe two of them, was because this was originally meant to be for a parade where kids would've worn them (two strings per kid, one controller each.) And they all change sequence through RF signals. http://www.youtube.com/watch?v=-3ex1k8f_Nk

bokaboi:
Latency, keeping in mind that I’ll want to be able to tap the strobe button to a beat from live music; will there be any latency?

Manual tapping, or automatic, beat sensing software, that will strobe the lights? Manual tapping the latency is however fast you can do it. :slight_smile: Software sensing takes a bit more, but should still be doable.

bokaboi:
Moving forward:
Where to from here?... I have a logical mind, I can usually understand coding syntax once I have the code – but I can’t write it from scratch. What I was hoping to find perhaps users, or an archive of code, that would be able to do parts of this project. Then I’d mash it all together whilst teaching myself. Are there any places you would recommend I should look at?

Think about everything everyone's told you so far, and start writing out what you want to accomplish in terms of 'how you want them controlled, as in, running wires from where to where, where's the control box going', 'what kind of strips do you want to work with', 'consider power/current consumptions', 'specific hardware' ...

Also, keep in mind that you are not forced to use a ready made Uno or Mega, you can design your own board with everything you need. Those lights in the video I linked above? That's a custom board running an Arduino Pro Mini bootloader (so it behaves like a regular Pro Mini). See attached picture.

Using a single Arduino will make it easier to synchronise the channels. It will also make it easier to extend it to provide stored programs in future. From your description, you want to control 4 channels of RGB LED strips independently, making 12 channels in all. If you use an Arduino Mega you get 14 pwm channels, so you won't need to resort to software pwm or external pwm hardware. Using hardware pwm, achieving low enough latency should not be difficult.

Those RGB led strips from ladyada that you referred to look easy to use. As the tutorial says, you need to get some logic level mosfets to drive them (3 per channel). It's usual to connect a resistor if 100 to 150 ohms between the mosfet gate and the Arduino pin to limit the switching current, rather than connect them direct as in the tutorial.

Using addressable LED, you won't need PWM channels at all. The ones I made are addressable with a WS2801 IC on them (RGB LED Strip - 32 LED/m Addressable - 1m - COM-10312 - SparkFun Electronics) which I build myself rather than buying them already made. You can either drive them through SPI (and there are easy to use libraries already made for them), or use any arbitrary pin and bit bang your way through it (which is what I'm doing since I have 2 strings per uController which only have one SPI hardware port.)

Maybe adapt something like this? The hardware (disclaimer: which I sell) may not be exactly what you want (or maybe it is :smiley: ), but the control concept is pretty good: use Processing to analyze music, pixelize, and blast out to an Arduino. Several people actually took my basic Processing code and the concept, and have made some much more advanced visualization suites in the past year. I don't recall what they're called...someone named michu I think.

Here's a blog entry with full build details: Maker Faire Bay Area 2011 | macetech.com

Hi all, I want to thank you all for getting back to me, and sorry for my late reply – I work as a flight attendant and have been out of state for the last few days.

Thanks for all the excellent ideas.

KirAsh4 and dc42:
For this first phase I’m going to steer clear of addressable L.E.D. strips. Just to remove a level of complexity.

KirAsh4:
Yes, I’ll be mounting them on the back wall. I’m going to stick the strips to some black painted wood: 4cm (width) x 1cm (depth) x 1m (length). I’m not sure what the name of this type of wood, but I have seen it before in hardware stores. I’m going to paint a black magnetic layer over the back wall, and then mount magnets on the blocks of wood. This way we can change the stage layout whenever we feel like it ?
I really like your idea for the modifications to the ‘master channel’, I’ll likely add those additional switches in.
The strobe effect would be done manually. So I’m guessing then latency shouldn’t be a problem?

This is the Arduino kit I’m going to purchase:
http://bit.ly/uSewKZ
And look, it comes with a L.C.D. screen! Later down the track I’ll figure out how to get it working.

Question:
What type of potentiometer would I need for the ‘Hue’ dial? Keeping in mind that it’s one-of-a-kind in the way that it needs to be able to make full circles?

Moving forward:
I’m going to attack this project in the same manor I taught myself HTML in high school; start small (hello world) and then build onto it.

  • The first thing I’m going to do is follow this tutorial:
    products:rgbledstrip:index.html [AdaWiki]
  • I then work out how to turn that feature on via a switch – that is, how to pause the effect.
  • Then I’ll add on the speed controller for the effect.
  • I’ll make the brightness controller next.
  • Then from there I’ll work out how to make the Hue control. This one is actually the most daunting for me… I’m not sure why, but I have a funny suspicion that it would be the most tricky part.
  • Gamma controller next
  • I then replicate everything four times
  • Finally I work on the take over controls

If you find any tutorials that you think I could find useful, please send them my way.

Well, thanks again. Have an amazing, and safe Christmas.

dc42:
Using a single Arduino will make it easier to synchronise the channels. It will also make it easier to extend it to provide stored programs in future. From your description, you want to control 4 channels of RGB LED strips independently, making 12 channels in all.

Does the negative wire for each of the strips not count? Each strip has R+ G+ B+ and -. Or does negative not need to be plugged into a PWM? What does PWM mean anyway?

The common negative connection doesn't count, you connect it to ground. PWM stands for Pulse Width Modulation.

Regarding the hue control, it's difficult to find continuous rotation potentiometers (i.e. without end stops), and it would need to have dual wipers to cover 360 degrees range. Rotary encoders are continuous rotation devices, but sense relative movement rather than absolute position. One possible alternative is to use a rotary encoder along with an RGB LED to display the selected hue. Another is to replace the hue and saturation controls (and possibly the brightness control as well) by 3 linear (as opposed to rotary) potentiometers mounted next to each other controlling the RGB levels.

PS - I just found a device that you could use for hue control, see http://www.newark.com/jsp/search/browse.jsp?N=2203+202065&Ntk=brand&Ntt=bourns&Ntx=mode+matchallpartial. It's a rotary control providing output of absolute position as 8-bit Gray code. Although it provides 8 bits of output, it has only 128 clicks per rotation, so you would be able to select from 128 hues.

bokaboi:
KirAsh4 and dc42:
For this first phase I’m going to steer clear of addressable L.E.D. strips. Just to remove a level of complexity.

Fair 'nuf. Though I also took the same approach when I wanted to start work with RGB LED, then I found two different libraries for working with addressable strips and I was quite surprised at how easy it was to implement. Though your mileage may vary. Nothing wrong with starting small.

bokaboi:
KirAsh4:
The strobe effect would be done manually. So I’m guessing then latency shouldn’t be a problem?

Technically, no. However, if you're a few hundred feet away from them, then yeah, maybe. The signal does take a micro second to travel that distance. :slight_smile:

bokaboi:
This is the Arduino kit I’m going to purchase:
http://bit.ly/uSewKZ
And look, it comes with a L.C.D. screen! Later down the track I’ll figure out how to get it working.

I'm also 99% sure that's a clone Mega, not an official one. Some folks have indicated issues with clones, and others have said theirs were just fine. Again, your mileage may vary.

bokaboi:
**Question:**What type of potentiometer would I need for the ‘Hue’ dial? Keeping in mind that it’s one-of-a-kind in the way that it needs to be able to make full circles?

dc42 answered that for you.

bokaboi:
Moving forward:
I’m going to attack this project in the same manor I taught myself HTML in high school; start small (hello world) and then build onto it.

That's a good approach.

bokaboi:

  • I then work out how to turn that feature on via a switch – that is, how to pause the effect.

Study the code listed on that page. The color cycling happens in the main loop, step by step. First one blue to violet, then violet to red, etc., etc. There is no delay between them, so it just continues on. Personally, I would remove all of those for loops outside of the main loop, stick them into separate routines which you then call from the main loop when a button is pressed, or when you turn the pot to change. But, that's me.

bokaboi:

  • Then I’ll add on the speed controller for the effect.

Bigger delay ...

bokaboi:

  • I then replicate everything four times

Don't have to. Just write the code and routines once, then you call them from whichever channel you're adjusting.

bokaboi:
Well, thanks again. Have an amazing, and safe Christmas.

Same to you. Safe flying![/list]