Step 14: Enjoy!

Picture of Enjoy!
I hope you enjoy the beautiful and hypnotic color patterns as much as I do. I have 5 well tweaked parameters in current firmware to choose from. The up/down of the switch changes the pattern, while left/right changes the speed. Push of the switch pauses/un-pauses the move. Hold down the switch for two seconds turns the lights off.

There might be more functions added to the firmware, as there is a plenty of room left on the programming memory.

The 5 pin header contains two pins that can be used as analog inputs - so there are possibilities of adding interactivity based on analog input, such as sound. Hackers are invited.

fsobalski4 years ago
Do you use proportionally lower resistor values to compensate for the multiplexing?

What color/gamma correction function did you use? I experimented with few, but none yielded great results. The proper correction involves matrix math and is a bit too intensive for such uCs.

Is there a set of resistors for each LED or one set for few in parallel? If the latter, how are they behaving? Are they always lighting uniformly? Didn't some of them die prematurely (well even so it would take a lot of time, but still it's a possibility)?
ledartist (author)  fsobalski4 years ago

I'm driving each of the LED with about 10 mA (blue/green) and 18 mA (red). (red gets more current because of lower voltage drop) Which is not that much, but the LEDs seem to be quite bright.
I think you have to give a bit more current when you multiplex many LEDs, but I'm only multiplexing 3 channels (R,G,B) so not that much is needed. I determined the current by experiments. Your mileage will vary.

Gamma correction is applied via my PWM method which uses multiple (127 or 255) pulses within one "refresh" period and by changing the pulse width within. Please look at the timing chart in step 1 or 2. It's software based PWM, but I use hardware to generate precise pulses.
Yes this is not a precision gamma correction, but it does produce exponential curve to compensate for human eye response. (This subject is very deep so can't explain easily...)

Regarding the resistors, each LED has it's own resistor, even though R,G,B LED look to be sharing one resistor. Because R,G & B LEDs don't light at the same time (multiplexed). I would not connect LED in parallel without each having a current limiting resistor.

Thanks for the explanation!
OK I really really really want one!!! Is there any way I could purchase a complete one / ten from you?
My hands shake to much for working with SMD parts and getting hold of decent tools in South Africa is expensive. I'd like to try encasing one in an Acrylic lens to expand the wash affect.

Thanks and yet again absolutely awesome!!!!!!!!
ledartist (author)  Monkeyking6684 years ago
Due to the building process being so time consuming, I can't put a price on those...
You don't need solder paste to solder SMDs. You can do it with a regular soldering iron (fine tip though) as well. I still do it that way at times. Take less coffee and see if your hands stabilizes ;) That's the trick for me.
Thanks, Aki
bpark10004 years ago
I have a solution to the "there are not enough PWM controllers in the chip" problem. Why not do the PWM in software? With assembly language, and the high speed of your controller, this should be easy. If you run a periodic interrupt at 400,000 per second, for 12 bits of resolution, the absolute lowest flicker frequency will be about 100Hz. You mentioned the trick of having each LED flash more than once per period. If you use what is known as the "rate multiplier" algorithm, you will have the absolute minimum of low frequency energy in the light output. The rate multiply is done with a lookup table and simple logic (in the software). I can give you code for this, if you are interested, email me at bpark1000@gmail.com.

(I built a Lynx robot using 18 servos, each requiring a PWM waveform to command position. I did that with a single 6808 8MHz processor, the software generating the 18 PWM waveforms, along with the math algorithms for walking.)
ledartist (author)  bpark10004 years ago
Thanks for your comment.
I _am_ doing "software PWM" and doing that in assembly. It's just not the straight forward form of PWM.
Running your number and run interrupt at 400 kHz, that will only give me 40 instructions per period. That will leave nothing else for other processes...
Is my Instructable clear enough on the concept of my PWM method? It's a combination of hardware PWM (to generate each pulse) and software PWM (to control which LED receives the pulse). To me this solves two problems at once - not enough hardware PWM channels, and to correct for gamma (non-linear output).

Having said that, I am interested in "rate multiplier" algorithm. Will email you.
What a great instructable!!

Really detailed! I'd say as good as evil mad scientist instructions. Those are pretty good.

I'd like to make one of these, would you share the board gerber? Trying to hack together something as good as your board would take forever...!

Keep up the good work!
Jerseydevil4 years ago
This is ridiculously beautiful and utterly brilliant. But I'm so intimidated by working with electronics that I couldn't imagine building something like this. However, if this was ever a kit.... (I can dream, can't I?)
Excellent, really worthy project buhhuutt if I did have one comment I only saw one display mode ? is there others?. Now if you could combine the Fusion Core with it's 19 modes with this project then I see no reason this would not get over $100 minimum sold in shops. I think the Fusion Core was sold out on the only website that supplied it all the time (they always showed stock but when you went to buy "Sorry no stock"). For sure 9.5/10 for this project would be 10/10+ with more display modes.

Please understand if I wasn't honest then I think you could get bored pretty quick with it. I have an original Wavefinder DAB from PSION (£59) and this mood light type display is 10 years old now also the Philips living colours mode light I paid over £100 or $160 and was bored after only a week. Your project is head and shoulders above these as you can look at the LED's as they display but more modes please and your %100 onto a winner. Good Luck.
ledartist (author)  CodfishCatfish4 years ago
Just looked up Fusion Core you mentioned. It's very similar to another of my project.

Same # of LEDs and the shape. Mine again is about smooth fades, not so much about "patterns". I like things more organic.

Agreed the Fusion Core is a bit overkill and totally unsuitable for that whole fade type effect but I wondered if that would inspire some patterns, it is probably very time consuming programming 100+ LED's to fade when you want them but perhaps giving a few patterns to suit different environments. Whatever your choosing I am sure this will remain one of the best featured projects on Instructables for a long time to come. God Luck with your wonderful projects Aki a joy to view, kind regards Spence
ledartist (author)  CodfishCatfish4 years ago
There are 5 modes in the current version. Although I can put 100's of patterns in it, I find myself always coming back a few patterns that I really like. So I only have 5 "well polished" patterns.

Also note that most of those patterns drift slowly (color wise) over time, so every time you look, you see different colors running. Some patterns take a long time to repeat. So the chance of "getting bored quickly" I think is pretty slim.

You can adjust the running speed as well.

Understood Aki. as I mentioned it's an amazing project and I praise your work. It's worthy of a featured and a 10/10. Keep up the awesome stuff and I'm sure this might just make you a millionaire.

The very kindest regards Spence
pmaegerman4 years ago
I just love it, the pattern is beautiful, not sure I could reproduce this with standard components, but definitely worth trying. I never managed to have PWM working with multiplex, great job !!!!
ledartist (author)  pmaegerman4 years ago
Please try. I want others to experience the beauty of full-color LEDs. I think those full-color LEDs potential to produce settle colors are under utilized.
You should be able to build a subset of this circuit by only using 9 LEDs quite easily. If SMD is not your ally, you can source all components in through hole type.
So long as you keep the base circuit & microcontroller the same, you can use my firmware to run it!

SidMo4 years ago
Хорошая работа. Good Work!
Wow… that's wonderful…
mfennell4 years ago
Wow. I expect that something like this would sell out at thinkgeek or really, just about anywhere. Heck, I'd buy one or two myself.