LED Comparison video

So I’ve been building charlieplexed displays and haven’t seen a lot of detail on how various LED types perform in display functions, versus acting as indicators or providing lighting. I just finished up my 3rd display using different LEDs and shot video of them together. The video is pretty good, but it doesn’t do justice to how different they really are unfortunately. The camera’s sensor just doesn’t deal with the breadth of exposures as well as a retina does.

Some editorial observations:

  1. Water clear LEDs. They’re readily available and tend to be the cheapest ones to get in quantity off of eBay. They’re exceptionally bright and that tends to be a disadvantage in a display because they’re almost too bright to look at. Yeah, careful resistor selection and PWM modulation can take the edge off, but they’re still very very bright. 3mm water clear LEDs (not shown) are easier on the eyes and kind of nice in a twinkly way, but they’re fiddly to work with since they don’t tend to have nice flat bases like 5mm LEDs do, so getting them all lined up and coplanar is a bit of a pain. I’ve seen really nice things done with them with diffusers in front of the LEDs, though. They also seem to have a bit of a viewing angle issue - if you’re right in front of them they’re pretty clear, but as you get more off axis, the spilled light tends to turn your display into a blur.

  2. Straw hat LEDs. They’re slightly harder to get, and the auction pictures make them look more diffused than they really are, but at least the batch I got are all tight little pinpoints of light. It’s actually a fairly nice look, and you can view them pretty far off angle without losing too much detail. The ones I have are like normal water clear LEDs without quite so much body, but they still have a domed top. I have some of the other straw hat LEDs where the lens is concave instead of convex and their lighting performance is pretty similar. They’re not quite as bright as the water clear LEDs I have, but they’re a different color, so it might just be a base brightness difference. Hard to say with how thin the documentation is on eBay.

  3. Diffused LEDs. I really like these for display purposes. They’re bright enough to be seen in normal room lighting without being so bright that they keep you up at night. I can see them at pretty much any useful angle, too. The only thing I worry about is that they might not be quite bright enough once the display goes into an enclosure, even a clear acrylic enclosure. But I really like the look in displays.

Going forward I figure I’ll go with the diffused LEDs or straw hat LEDs for displays, leaving the water clear LEDs for other purposes.

This is really helpful! thanks a bunch!
Question: you say you've been doing a lot of charlieplexing, I've been having a difficult time grasping the whole idea of coding around charlieplexing. Do you have a sketch or something I could study?

Diffused are best for message boards, having the widest viewing angle/s.
The concave-lens sort are “NOS” point-source, narrow viewing angle.
Capturing LED action for youtube can be a challenge - strobe and frame rates, the camera and its features, and so on.

This is really helpful! thanks a bunch!
Question: you say you've been doing a lot of charlieplexing, I've been having a difficult time grasping the whole idea of coding around charlieplexing. Do you have a sketch or something I could study?

The simplest (useful) Charlieplex sketch I know of it Ben Brandt's - it's what I use for anything under 30 elements since it's just running around in a loop. It has limitations that keep it from scaling too well, but it's pretty clear how it's working:

Effectively you define your port configuration in led_dir and led_out, then you can call light_led with which LED you want to light. But I usually use draw_frame to run over an array of LED brightnesses. So instead of drawing a 4x5 grid of LEDs, I have one running a Tiny85 using Asher Glick's charliecube arrangement in this code:

..which isn't as well commented as it could be, but if you look at the main loop, the first case is pretty straightforward: It draws a random LED in a random color for 100 loops. It's entirely free from strict timing, so it's not too useful when you try to do things asynchronously, but for simple displays it's easy to get up and running.

Once I needed more asynchronous capability (where I can just fire drawing commands off into an array and an ISR handles keeping the display updated), I migrated to Jimmie Rodger's LoL Shield code. The simplest version that I have running is a 30 LED array that plays life and tells the time:

Fundamentally the changes from the Lol Shield product are mostly tied up in the ledMap definition in Charlieplexing.cpp. Each element of the array is the input and output pins for each LED position. If you look into the Rain function, that's a simple way of driving the array - make changes to world[1], call fade_to_next_frame() to switch active buffers.

The 110 LED arrays in the video are all using the logical extension of the 30 LED code, just tweaked for memory utilization - the LoL Shield code tends to allocate way more memory than it needs, which limits what you can do with a 328:

...which still needs to be cleaned up, but it's at that stable point where debugging it is frustrating since errors creep in after running for an hour.

Hope this helps!

Wow! so many resources! Thank you!

Yeah, I'm totally jealous of Aki's work for The LED Art, his color saturation is beautiful and it's just locked in. Admittedly, using my iPhone as a video camera is one of my bigger limitations, but there's no comparison to this:

No doubt the Aurora is one of the most well known and beautiful pieces of LED art out there, I've been trying for a while to replicate it.