Enhancing our Brains With Light, Help Requested

Hello Arudino Community!

The short and quick: Using flashing lights to entrain the brain and induce contemplative / meditative states.
I'm looking to create a DIY of this device: http://www.lucialightexperience.com/

So I've been away from Arduino for about 5 years, and I'm rusty.

Here's what I'm looking to do:

Have a 'plus sign' of high power LED's (2x2x2x2), and a constant halogen lamp in the middle:

L
L
L L H L L
L
L

I'd like the led's to be flashed on and off at certain frequencies between 1-30hz in intervals of 1hz.

All led's can be flashed at the same time, and perhaps with the same controller.

So here's what I'm looking at:

  1. Powering 8 LED's
  2. Flashing the LED's at specific frequencies.

I've seen the blink without delay, and can convert the milliseconds to hz.

I have also seen PWM used, which I am not familiar with.

How would you approach this project? Thank you!

BlinkWithoutDelay looks good to me for your project.
You also need a power supply and switching device (MOSFET) that matches your total LED currents. LEDs with built-in current control can be used only if they allow for switching.

high power LED's (2x2x2x2)

Can you please explain what that means and include a link to the spec of the leds?

I'd like the led's to be flashed on and off at certain frequencies between 1-30hz in intervals of 1hz...

...I've seen the blink without delay, and can convert the milliseconds to hz.

From what you've told us you can probably use delay(). The main reason to avoid delay() is that processing pauses during the delay time. So for example, if you're controlling the speed with a pot and reading the pot every time through the loop, you'll have to wait up-to 1 second before the program reads the pot and responds to any changes.

Another (usually minor) issue with delay is that it doesn't account for the execution-time of any other program steps. i.e. Reading a pot adds a few microseconds to the loop/delay and the the errors accumulate. With a millis() timer, the timer is running independently of the program and errors don't accumulate.

You might want to start with delay() and the regular Blink Example and you can always "upgrade" later.

I have also seen PWM used, which I am not familiar with.

PWM is for dimming. Pulse Width Modulation pulses on & off ("blinks") faster than the eye can see (about 500Hz for the Arduino) so the LED appears to dim. It can also be used to control the speed of a motor (because the motor can't change speed that fast either and the power is averaged-out.) analogWrite() is PWM and it only simulates analog in certain applications.

...At 30Hz you'll probably perceive dimming more than flashing.

  1. Powering 8 LED's

High power LEDs (1W or more) are normally driven from a special constant-current power supply (or constant-current driver). You can put several LEDs in series and the same current flows through all of them. The current rating has to match the LED requirements, and the maximum voltage just needs to slightly-exceed the sum of the LED voltages.

If you get a dimmable LED power supply you can use the dimming-input to blink the LEDs. The only "catch" is that the industry standard is 0-10VDC or 10V PWM, so you might need a "small" 10V power supply/source and a "small" transistor driver. Some have a built-in 10V pull-up so you just need the transistor driver. if the specs cay it can be dimmed with just a pot, thats "clue" that it doesn't need an external 10V power supply. And, there are some that can be controlled from 5V.

High power LED also need a heatsink. (They don't run as hot as an equivalent incandescent bulb but they can't handle as much heat.)

  1. Flashing the LED's at specific frequencies.

It's easy to modify the Blink Example. The delay() time just needs to be a variable. If you need to manually adjust the speed a pot is the easiest solution but you won't know the exact frequency. You'll have to decide what kind of user interface you want (if any).

Of course it's also possible to "blink" with unequal on & off times, if that's of any interest.

And of course, you can develop your software with a regular little LED (or the built-in LED).

My first thought was that this original device is foisted upon an unsuspecting or gullible audience with more money than brains. A bit of googling confirms, at least for me, that this is the case.

IDK, really, you can do what you want and maybe even reap the benefits be they medical or financial.

My second thought was that this is an instant problem for a certain percentage of the population, somewhere along my brief researches I came across this:

If you have a history of epilepsy or seizure disorder, we advise that you try floating as a great alternative.

I'll stick with floating. I don't get seizures, but I do get headaches from this kind of thing. As usual, YMMV.

a7

DrDiettrich:
BlinkWithoutDelay looks good to me for your project.
You also need a power supply and switching device (MOSFET) that matches your total LED currents. LEDs with built-in current control can be used only if they allow for switching.

Ah thank you, that is very helpful!

PaulRB:
Can you please explain what that means and include a link to the spec of the leds?

Here are the LED's, 5w cool white: 1W 3W 5W White Red Blue UV RGB Green High Power LED COB Chip Light With PCB USA | eBay

DVDdoug:
From what you've told us you can probably use delay(). The main reason to avoid delay() is that processing pauses during the delay time. So for example, if you're controlling the speed with a pot and reading the pot every time through the loop, you'll have to wait up-to 1 second before the program reads the pot and responds to any changes.

Another (usually minor) issue with delay is that it doesn't account for the execution-time of any other program steps. i.e. Reading a pot adds a few microseconds to the loop/delay and the the errors accumulate. With a millis() timer, the timer is running independently of the program and errors don't accumulate.

You might want to start with delay() and the regular Blink Example and you can always "upgrade" later.
PWM is for dimming. Pulse Width Modulation pulses on & off ("blinks") faster than the eye can see (about 500Hz for the Arduino) so the LED appears to dim. It can also be used to control the speed of a motor (because the motor can't change speed that fast either and the power is averaged-out.) analogWrite() is PWM and it only simulates analog in certain applications.

...At 30Hz you'll probably perceive dimming more than flashing.
High power LEDs (1W or more) are normally driven from a special constant-current power supply (or constant-current driver). You can put several LEDs in series and the same current flows through all of them. The current rating has to match the LED requirements, and the maximum voltage just needs to slightly-exceed the sum of the LED voltages.

If you get a dimmable LED power supply you can use the dimming-input to blink the LEDs. The only "catch" is that the industry standard is 0-10VDC or 10V PWM, so you might need a "small" 10V power supply/source and a "small" transistor driver. Some have a built-in 10V pull-up so you just need the transistor driver. if the specs cay it can be dimmed with just a pot, thats "clue" that it doesn't need an external 10V power supply. And, there are some that can be controlled from 5V.

High power LED also need a heatsink. (They don't run as hot as an equivalent incandescent bulb but they can't handle as much heat.)
It's easy to modify the Blink Example. The delay() time just needs to be a variable. If you need to manually adjust the speed a pot is the easiest solution but you won't know the exact frequency. You'll have to decide what kind of user interface you want (if any).

Of course it's also possible to "blink" with unequal on & off times, if that's of any interest.

And of course, you can develop your software with a regular little LED (or the built-in LED).

Whoa, this is legit everything I need to make this happen, thank you!!!

Do you have any recommendations on a powersupply for theses LED's where I'll be able to have them blink?

Thank you!!

alto777:
My first thought was that this original device is foisted upon an unsuspecting or gullible audience with more money than brains. A bit of googling confirms, at least for me, that this is the case.

IDK, really, you can do what you want and maybe even reap the benefits be they medical or financial.

My second thought was that this is an instant problem for a certain percentage of the population, somewhere along my brief researches I came across this:

I'll stick with floating. I don't get seizures, but I do get headaches from this kind of thing. As usual, YMMV.

a7

Ha, I totally hear you! Thankfully I've already experienced it myself... Incredible stuff, full on visual geometric patterns, very incredible experience with nothing but light!

This is for my personal use. As you mentioned, the seizure risk makes it something I wouldn't want to market to other people. The original Lucia no. 3 is over $18,000, and it is really just 8 flashing led's, so I feel we can collectively make our own version with the same results.

Thank you!

Here’s an update:

  1. As Micro Center didn’t have high power leds in stock, I adjusted my plan…

Instead of having a light flash on and off, I opted to have a motor spin a disc in front of existing lights I already had.

The disc is kind of like a pizza with 2 opposite slices missing… That means, as those empty parts of the disc pass by the light, the light shines through, and when the other part of the disc is spinning, no light shines through.

The speed is controlled via a pot


At first, I was using a large multicopter motor I had in the shop. https://hobbyking.com/en_us/4112-320kv-turnigy-multistar-22-pole-brushless-multi-rotor-motor-with-extra-long-leads.html

And a matching ESC.

But here’s the problem… (or problems)

  1. The motor can’t reliably spin slow enough. It doesn’t engage until the pot is twisted about 1/3rd of the way, and when it does…

  2. The disc seems to be too heavy. I can make a lighter disc, but the real issue is #1, it won’t spin at a low speed…

My end-goal is to control what frequency the light is blinking at. Because I can’t reliably spin it at low speeds, I’m unable to do this at the correct frequencies…

SOLUTION:

Okay, so this motor is designed to spin VERY fast, and the ESC is programmed for that as well…

BUT I also have a HUGE pancake motor from a gimbal: iPower GBM8108-90T Brushless Gimbal Motor - Aerialpixels

This motor is designed for lots of torque and slow rotations…

BUT, I’m not sure how to use this with my existing setup. It is typically ran by a motor controller, which I do have:

https://www.itsqv.com/QVM/index.php?title=How_To_-_Martinez_Brushless_Gimbal_Controller_Set-Up#Controller_Tuning

I was able to run a Servo program on the Arduino and get information into the motor, but it doesn’t spin freely.

I think it due to how the motor controller is currently setup.

Any ideas on how to use this motor (or any other gimbal motor) and allow it to spin freely?

Thank you!

Use a gearbox if the motor is spinning too fast.

I'd stay with the blinking LEDs with a detached constant current source. This will allow to blink the LEDs instead of only dimming.

I also think you should stick with LEDs, that’s at least in part because it is way easier to do than messing around with motors and pizzas ( mmm, pizza! ) and gears.

Also it will be way more flexible and amenable to experimentation.

The fact that you don’t have exactly the LED necessary at hand shou,d be no impediment. Order the ones you want. Rig up your circuit using any old LEDs, by the time you have you software functioning the man will have delivered to you the “real” LEDs.

Actually given the blinding brightnesses, it probably makes sense to go way into the function of your device using stand-ins, also less risk that a logic error ends up frying $$$ worth of higher power LEDs.

Divide and conquer.

a7

DrDiettrich:
Use a gearbox if the motor is spinning too fast.

I'd stay with the blinking LEDs with a detached constant current source. This will allow to blink the LEDs instead of only dimming.

I agree, the LED's are much cleaner!