Ontario : Triggering very bright lights using Arduino

Hi all,

I'm a first time poster (signed up today), and don't have much experience with Arduino, aside from knowing that it could potentially work for my project.

Brief summary:

I'd like to wire an arduino sensor, to some lights, which need to be VERY bright (LEDs I'm assuming) that light up when I strike a drum on my acoustic set.

Research I've done:

I know that LEDs + MOSFET(don't quite understand what this is quite yet) should be used for fast response; and that a need a constant current driver + external power supply is needed as the voltage/current capabilities of the stock arduino aren't sufficient for something like this, and that piezo sensors would be required for impact sensing.

I've seen it done previously (L.E.D. (Light Emitting Drums) - Full Show - YouTube , Drumming with FIRE & Water - LED Drum Show (AFISHAL) - YouTube) but those aren't as bright as I'm looking to get, however they have very good response time.

Previous Experience:

I have an HSBc. in physics, and program in python, so I somewhat have some intuition behind coding and wiring but not really the specific knowledge to make it happen.

Limiting Factors:

Must be BRIGHT, it should look like a huge cylinder of light is shooting out of the drum (would wire the leds to the shape of the drum)

Can't be high latency; needs to look like the lights are reacting exactly when I strike the drum.

Specificity; the lights can only react to striking the specific drums IE can't be overly sensitive to noise from other drums

If this is something you'd like to work hand in hand with me on please PM! If you just want to provide general guidance post below.

Questions:

Can anyone provide the estimated budget/wiring and coding specifics on how to do this?

The brightness of the light really has nothing to do with the Arduino. It will just be responsible for detecting something and turning something on. If you know Python you will understand the programming concepts involved in getting that to happen.

The choice of lights and drivers for them is a question of electronics rather than programming.

...R

@Robin2 Thanks for replying!

From what I've read some people actually use a line out from the Arduino to power lights, which is why I included that (it has a max of 5V or something.)

Do you mind recommending some lights and drivers based on what I'm going for? Maybe a tutorial(s) on how to piece everything together?

Your basic research is going the right direction...
The two clips, and what you described are three separate things...

Your requirement is for ‘columns’ of light - lasers or lenses to form beams.
Clip 1 - various LEDs around the kit that flash in sync with each hit.
Clip 2 - LEDs ‘inside’ each drum, to illuminate the (clear) skin and water pool.

Each has different problems for implementation. but your use of piezo sensors is a good starting point.
As noted, you need LED drivers (depends on type and distribution of LEDs)
Getting the micro to do its thing is relatively straightforward.

You would simply fun a tight loop (no delays!), and treat the piezos as switches.(Don’t connect the piezo directly to an input pin they can generate high voltages = toast your arduino!)

You may like to add selectable profiles for brightness and decay - so the light show doesn’t become boring and repetitive.
There a few other tricks you can add, but get a sensor and one LED working to prove your fundamentals - then carry on!

lastchancename:
Your basic research is going the right direction...
The two clips, and what you described are three separate things...

Your requirement is for ‘columns’ of light - lasers or lenses to form beams.
Clip 1 - various LEDs around the kit that flash in sync with each hit.
Clip 2 - LEDs ‘inside’ each drum, to illuminate the (clear) skin and water pool.

Each has different problems for implementation. but your use of piezo sensors is a good starting point.
As noted, you need LED drivers (depends on type and distribution of LEDs)
Getting the micro to do its thing is relatively straightforward.

You would simply fun a tight loop (no delays!), and treat the piezos as switches.(Don’t connect the piezo directly to an input pin they can generate high voltages = toast your arduino!)

You may like to add selectable profiles for brightness and decay - so the light show doesn’t become boring and repetitive.
There a few other tricks you can add, but get a sensor and one LED working to prove your fundamentals - then carry on!

Great thanks for replying and pointing me in a better direction.

I guess when I said "column", what I really meant was, I want the light to really burst out of the drum, not just be a couple inches out from it. Do you think it would be better to have a plate of LEDs I mount on the inside of the drum (will have a clear skin on it), or to just have an array around the ring (hoop) of the drum?

Could you point me in the direction of the brightest LEDs + the required drivers for them? I'm assuming that if the light is too much I can always turn them down, but vice versa isn't true... I'm also not quite sure what you mean by "treat the piezos as switches"

As I said above, is there sort of a "general kit" you could design (for one LED as you mentioned), that would allow me to easily generalize to a whole array once I'm ready? I'm not sure if that's asking a lot...

Ok, some basics.
While you can ‘turn them down’, there is a far better way to control LED brightness... PWM
Don’t worry about which LED to buy, get the very basics working with a piezo sensor (5c), Arduino, and 5c LED (and resistor) from anywhere.

When the time comes - later - you may want to explore both options for each drum - a single very bright LED, or a cluster of quite bright... (same power, just applied differently).
Depending on the ambient lighting, you may want anything from 1-5W per LED. Consider you may also like to use RGB LEDs, so each note/song/drum/whatever can mixor change colours however you prefer. Later.

One last thing. If the high-power LEDs are physically attached to the frame of the drum, they can get HOT if they’re on most of the time. Will this de-tune the drum? or does it need to considered at all?

Thanks for your patience!

Truthfully, this is something I'm looking to start executing in production in ~1 Month so ill have to be able to go from iteration to scale fairly quickly. So for my own sake, what more would be involved in going from a single LED, a sensor, and an arduino, to go with more lights? In your description you don't have a power source + driver, which I'm assuming would be needed? For the proof of concept I'd like to have all the components understood. I'm also seeing A LOT of different arduino products... which one would be necessary to do this at full scale?

The full concept of the video involves this portion of the lights for around 40-50% of the time, and will be absent for the rest. I'm hoping to get a couple colors and have them iterate every n strikes, and have different colors on each drum (there will be two that use impact sensing lights and 1 that is a ring of lights that goes around the bass drum). There will also be music + dancers in the video to keep attention keen. Since the performance will be short, and the audio will be prerecording (probably), the heats impact on the tuning won't be an impact. But you're correct in your assumption that in reality it will affect it.

In terms of ambient lighting, the room will be pitch black for the portion of this where the lights will be in effect.

One month from where you are is optimistic, but not impossible.
Stepping up from a single sensor & LED to more of everything is mostly physical (think LEDs, mountings and drivers), but will require some minor expansion of the code to handle multiple concurrent sensor/LED actions.

At this stage,the most important part of your project is designing the hardware (after you know it works), to ensure it will still work when you add more software features over time.

You’re right about power supply, but that’s entirely dependent on the number & type of LEDs. The power drawn by the processor is negligible.

BTW, how many LED channels in total, and where do you live? This may help find someon local to you.

Yes, I'd say I'm an professional level coder, so that side would not be an issue. I also build custom PCs from scratch and am familiar/have access and experience with tools for soldering and wiring (I also have a quite a bit of free time to put into learning it quickly).

Truthfully, I'm not sure how many LED channels would be required, I have a set of studio lights in my place that have an array of ~ 50 I believe, and they are quite bright, so I'd assume somewhere around there to be safe... I'm from Toronto, Ontario!

This will require a bit of thinking to get 50-odd channels of input and output performing the way you want.

CPU wise, a Mega 2560 should be ok, but will still need some thought on the I/O

I’d also consider there could be a case to add a small coprocessor in each drum with a serial link - to reduce the amount of wiring and for ease of bump in/out, but this is just a side thought.

Sorry, I lived in Toronto 50 Year’s ago, but now I’m a bit far away!

Ok, in that case, what would you say is the easiest lower limit LED count I can start at to get an idea of brightness that wouldn't restrict me on expansion should I need more?

Is this something you'd be willing to work on me with? I could e-transfer you some money and give you the full scope of my project if you'd be willing to provide guidance throughout this process privately (through email or whatever you deem appropriate). I have no problem doing all the heavy lifting, just need someone with experience to sort of "partner" with me. Unless of course you know someone in the GTA, in which case I could speak with them too :smiley:

Let me know.

The challenge of remoting this project is that it’s very mechanical, and could go several ways - often a personal preference if the developer.

Basics - whether you use direct pin inputs or shift-registers... maintain a constant background process that scans and tracks all the input pins. (longer wire runs may require some conditioning - hence the thought about serial)

This will give you near-real-time strike status. (Also worth considering a sync clock between nodes if they are used... to enhance ‘pulse’ style effects.)

Then you probably need to build an array of timers and time constants to manage every possible output.
Now comes the tricky bit (depends on the hardware interfaces)...
You have to calculate on/off or PWM decay level for every channel, and output that against the continuously running timer values.
Having a local serial coprocessor may also help, as each local cpu will have its own pwm outputs- to drive the drivers.

As you can see, there are a lot of options, and the project needs to be ‘designed’ to get the best results. It could look great, and easily become a saleable product if it’s easy for others to retrofit.

Ask the mods to bump this over to Gigs and Collaborations - put Canada in the title, you may get lucky with winter coming!

Ok so in the meantime, from what I gather (for my own notes):

  1. I need to decide on the input being direct pin or shift-registers. Either way maintain background process that scans/tracks all the input pins.

Question: What do you mean by "sync clock between nodes if they are used."

  1. Build an array of timers/time constants to manage every possible output.

  2. This has lost me can you provide a resource(s) for me to check out:

"You have to calculate on/off or PWM decay level for every channel, and output that against the continuously running timer values.
Having a local serial coprocessor may also help, as each local cpu will have its own pwm outputs- to drive the drivers."

How would I go about asking the mods to do that? Sorry... new here. Cool to know that I could get some return from this; but I agree that I want it designed first before I build it.

Sync clock... a means of deferring a complex command, then ensuring all the nodes fire simultaneously. Only necessary if you use the distributed cpu model.

  1. Every strike occurs at a moment in time, you need to track this so you can calculate the decay over time ‘after the event’. This will become the PWM value sent to the driver for te associated channels.***

e.g. an array of structs for each input - for event timing, and another array of structs for each output - to keep track of of the current pwm value and ramp speed.

*** This adds another possible twist.
You may like to map different outputs to different input events at different times during the performance... e.g. bass drum fires all outputs, not just the bass LEDs, or at other times, it fires some other combination of LEDs...
If you had a twin kit, you could animate ‘rotating wheel’ effects across the twins’. (just fun!). RGB adds a whole nother dimension!

Ok, I can actually follow all that, thanks for clarifying.

I think at this point ill need some hand holding to build this thing.

You mentioned that's not something you're comfortable with doing remotely, if we could work out some loose terms it may be possible.

If not, how would I go about asking the mods to shift this to the Gigs & collab forum?

Below the posts, there is a link “Report to moderator”. give that a shot.

Get back in touch if your chosen developer wants more info but I expect he’ll be pretty good, otherwise he’s going to struggle with all the concurrent action.

Depending on their preference, they will probably sketch out a black cm diagram and game plan - otherwise a project like this can get lost and out of control pretty quickly. Documentation is really important!

Ok sounds good. Thanks for your help.

Although I'm more looking to build/do this myself than off-load it on a developer (I can't really afford that :P)

Maybe i’m different, but this is a very tactile project, and needs the developer to understand exactly why certain hardware decisions were made - and how to interact with that hardware.
Yes it could be done remotely, but the costs involved - regardless of the actual project cost, could make it prohibitive,

What’s your level of coding experience? Any links? The hardware fabrication is a whole other area of skill.

For personal reasons I'm going to hold off on posting anything to my github. But a short summary is that I work for an Analytics Firm that does custom Machine Learning and Artificial Intelligence in Python, and I'm currently top 20 on a kaggle competition! In highschool I did some computer engineering and currently build custom high end PCs for people.

I suppose I'll see what the quote would be to guide me on something like this.

Do you have any good guides/tutorials on each of the steps you specified as being necessary?

Because you’re looking at Arduino, and this is definitely a real-time system - you’ll have to think C/C++ or lower.
The luxury of 4th gen languages will introduce too much variance in timing of (everything). You need to control aspect if execution down to 20-50mS consistently.