
Show HN: Ledonardo, my light painting hardware project - StavrosK
https://www.stavros.io/posts/behold-ledonardo/?
======
StavrosK
I have to say, I really love the comments here, I post something I made and
everyone chimes in with a bunch of interesting projects either they or someone
else has made, or new ideas. They're both interesting to read/see and inspire
me to work on new things, so I'd like to thank you all for making this comment
section a joy to read.

~~~
soperj
Would be kind of cool if you could do it quick enough so that you could get
the images with a normal shutter speed. That way bands could screw with people
taking pictures of their concerts and make it look like there were crazy
antics going on on stage.

~~~
Tepix
There are some displays that use quickly rotating led strips. There are also
led strips for bicycles that show images.

------
1g0rb
Really great writeup and results! I did something similar but much simpler few
years ago
([https://hyperglitch.com/articles/lightstick](https://hyperglitch.com/articles/lightstick))
but instead of long exposure (as I didn't have the good camera) I recorded the
video with webcam and reconstructed the final image from it so I didn't have
to shoot in the dark. The octave script for image reconstruction is very basic
(and the results are very lo-fi :)) but maybe you can use the same approach
and with some more work make more usable results (or phone app :))

~~~
StavrosK
Oh wow, I guess I'm not as original as I thought :P That looks great, and you
can get lots of long exposure apps for your phone so you don't have to use a
script to reconstruct the image, have you tried those?

~~~
1g0rb
Didn't really thought of that :). But this was in 2015 and basically just a
very lo-fi weekend project without any care about resolution or color
reproduction (I saw pixelstick project and just wanted to see if I can make
something similar :)) after which I used the LED strip for something else.

~~~
StavrosK
Oh jeez, the Pixelstick existed back in 2015? Looks like I was quite late.

~~~
dschiffner
I think the Pixelstick originally debuted on Kickstarter in 2013 and then a
more refined version came out in maybe 2016.

Kickstarter link:
[https://www.kickstarter.com/projects/bitbangerlabs/pixelstic...](https://www.kickstarter.com/projects/bitbangerlabs/pixelstick-
light-painting-evolved/description) Pixelstick website:
[http://www.thepixelstick.com/](http://www.thepixelstick.com/) They also now
make the ColorSpike: [https://colorspike.com/](https://colorspike.com/)

Regardless, your DIY solution looks really cool and well done! Props!

~~~
StavrosK
Ah, I wasn't aware, thanks!

------
ksaj
This reminds me of the light project at the CN Tower. The tower has lights
running up the sides, and a guy with a laptop programs colour sequences on it.
Because of the motion, it becomes obvious these can include animations, so
occasionally he actually generated photo-realisitic "slices". Someone came
along and did something very similar to your project in order to expose the
images in their entirety, which comes across almost identical to what you've
done (minus that organic ribbon appeal you went for). In his case, the
standard "moving colours" come out looking like simple flags, and of course
the images look like whatever they are.

I think this artist was inspired by the workings of a photocopier, which the
second person who wrote the software to decode and expose it clearly picked up
on.

I'll update this later if I get to my desktop and can post a link to that
project.

~~~
StavrosK
Please do, I'd be very interested in seeing it and I don't think I understand
exactly without some visuals.

~~~
radioactivist
[https://youtu.be/rqFMbXMfS9Q](https://youtu.be/rqFMbXMfS9Q)

~~~
StavrosK
That's fantastic, I was wondering whether it was actually images or just
randomly blinking LEDs that this effect read too much into until the RCMP
image came up. Amazing.

~~~
ksaj
I used to live on Queen's Quay and saw it pretty much every night. At first it
was only the solid colours blinking and racing up and down the tower, but one
day it was really obvious that there was a picture involved - it looked like
the edge of the screen of a worn out VHS recording. A while later, this video
was made, so finally my curiosity was satisfied.

------
fitzroy
> images come out great as long as you specify your walking speed in the app

Very cool. This reminded me of the bike-mounted dot-matrix printer. Similar
concept: light vs ink. [https://www.wired.com/2004/08/cops-put-brakes-on-bike-
protes...](https://www.wired.com/2004/08/cops-put-brakes-on-bike-protest/)

~~~
adfgadfasa
This is so great. Back in 2004 it sounded way harder to pull off with the
available hardware too.

------
nathancahill
I love the version of this for light painting Wifi signal strength:
[http://voyoslo.com/projects/immaterials-wifi-light-
painting/](http://voyoslo.com/projects/immaterials-wifi-light-painting/)

------
jeffschofield
This is really cool! I built something almost exactly like this, though we
used the ESP32 instead. [1]

What I find interesting is that I never had an issue with dropped columns over
network using the ESP32 as an AP. Did you connect the ESP8266 up to an
existing network?

I didn't see a mention of how you designed the brushes in this write up, were
they all just images on an SD? I experimented with a palette app to design the
brushes (solids, gradients, images, manual) and to send the frames to the
brush. Curious what your solution was!

This year I am adding a gyroscope to the device to experiment with 3D space
and holographic content. Also trying different LED attachments (like a
circular or matrix display) for different effects. There's a lot more to
explore!

I'm happy to see this today, the denser version looks very nice!

[1]
[https://twitter.com/JeffScript/status/1178446997507977216?s=...](https://twitter.com/JeffScript/status/1178446997507977216?s=19)

~~~
StavrosK
Ooh, yours looks amazing as well! Yes, the ESP8266 was the AP and it was
dropping (or maybe not displaying? I doubt that) packets. Maybe the ESP32 is
just beefier, or maybe it's the second core (the ESP8266 probably had to put
the wifi chip on hold while sending data to the LEDs).

The brushes were just images, yes. It's interesting that you'd ask that,
because I didn't have a concept of a brush (it's all just images), whereas you
do, since you use them :) In my case, I have a PNG with the pixels I want, and
then select the minimum time step and duplicate the columns in the PNG as I
want them, so I run through each PNG column to generate the "brush".

I really like how your example "fans out" by activating more LEDs in time, I
should try that as well. I think you'd get much better results with some
electrical tape as a diffuser (unless you like the stripes!) too.

~~~
jeffschofield
Haha I've been so absorbed by the brush metaphor in my take I didn't think
about what other terms to use. The fanning out is from a brush size slider in
the app. My goal was to make it performance friendly for artists so the app
has a bunch of real-time things like that.

You're probably right about the dropped packets, though it makes me concerned
I'll eventually run into the same problem and my whole workflow depends on the
network not sucking lol

Do you set your time step arbitrarily? I haven't implemented a solution for
stabilizing the time step (until the gyroscope is added) and found it very
difficult to get non-skewed results on images. Yours look really nice though,
was that just patience and a steady hand?

I really want to improve the density on mine after seeing your results. For
sure I'll work on better diffusion as well, we had one that blurred the
results too much so we bailed on the idea but I think a denser strip and a
tighter diffusion would be awesome.

~~~
StavrosK
If you want to discuss further, send me a message on Keybase (or something
else, whatever is convenient for you).

The ESP32 is pretty beefy, can you not do things on-device? I wouldn't rely on
the network after what I've seen, but I haven't tried the ESP32.

My time step is constant, I have a parameter for it but I rarely change it.
It's mostly a steady hand, yeah.

Are you talking about horizontal or vertical density? Vertically, the 60 pixel
per meter strip is the best you can do (there are some denser ones but need a
lot of current), but a diffuser will make it look _much_ better. Horizontally,
you can get very fine resolution, up to the refresh rate of the strip.

------
netgusto
Nice work!! Similar, check it out it's impressive too! Tom Stanton's Long
Exposure Drone Imagery
[https://www.youtube.com/watch?v=0QVjqSObEJs](https://www.youtube.com/watch?v=0QVjqSObEJs)

~~~
StavrosK
Jeez, that's amazing, thanks for the link! I had no idea it'd look so stable
with a drone...

------
Tepix
This is neat! I read about it (called light scythe
[https://techcrunch.com/2011/06/28/light-scythe-is-a-
monster-...](https://techcrunch.com/2011/06/28/light-scythe-is-a-monster-led-
strip-for-long-exposure-art/) ) and building my own for the 2011 chaos
communication camp. The pictures i took were hosted on Google Plus so i guess
they are lost now. I had the same issues with packet loss via bluetooth as the
author.

Edit: found an old picture
[https://imgur.com/a/pyCT9HX](https://imgur.com/a/pyCT9HX)

------
sdrothrock
I really enjoyed reading about your development process! I was thinking the
entire way though that it was kind of a shame that most of the images were
just making "hologram-like" pictures that we always see, but the last couple
of pictures were more along the lines of the possibilities I was thinking of!

Have you considered adding some kind of depth support that would allow you to
make "3D" images by moving not only left and right, but also back and forth?

~~~
StavrosK
That's an interesting idea! You can already do that by just moving back and
forth, all you need is to project the image flat and know when to turn. I will
try that next, thanks for mentioning it! Do you have any particular ideas on
what would be cool to try?

~~~
sdrothrock
Maybe you could have it beep in a certain pattern or pitch to cue you as to
when you should be turning in a certain direction.

My first thought was that with something like this
([https://www.stavros.io/posts/behold-ledonardo/wings-
small.jp...](https://www.stavros.io/posts/behold-ledonardo/wings-small.jpg)),
it would be cool to walk around the subject and have the "wings" actually furl
AROUND them rather than simply in front of them, though that might take some
choreography to make sure that your own shadow doesn't affect the image too
much.

Another thing that I thought was that if you can also selectively turn on only
portions of the bar, you could effectively create "windows" in the portrait as
you did with the other set of wings ([https://www.stavros.io/posts/behold-
ledonardo/alexandra-smal...](https://www.stavros.io/posts/behold-
ledonardo/alexandra-small.jpg)), which could work really well with something
3D-ish, where you can see through one part of the lights to a different
background also generated by the lights.

~~~
StavrosK
Ahh, yes, these are great. You can easily do them now, they just take some
choreography and specially crafted images. The shadow isn't much of a problem
if you walk fast enough and aren't lit, since you're mostly behind the lit
bar, which drowns you out anyway.

I'll play a bit with the window idea, feel free to follow me on Instagram at
[https://www.instagram.com/stavroskorok/](https://www.instagram.com/stavroskorok/)
if you want to see the progress (I post all photography-related doings there).

------
neuralzen
I love these kinds of projects, and jumped on the pixelstick kickstarter
several years ago when it released. Here is one of my favorite images from
messing around with it [https://imgur.com/e4UWiqz](https://imgur.com/e4UWiqz)

------
GistNoesis
Nice. If you add some camera to the leds, using Aruco markers you can easily
get the camera pose and adjust the led colors accordingly to draw a predefined
image without needing a steady hand.

You probably can turn this into a phone light brush app if you use front
camera and screen as a led (the torch usually don't change color), but it
still has some challenges with respect to latency (in dark environment cheap
camera get slow) and user-friendliness specially if it needs calibration.

~~~
StavrosK
Hmm, wouldn't that add unacceptable latency? I feel like it would be at least
50ms.

~~~
GistNoesis
As I mentioned latency is indeed an issue, but I don't think it matter that
much. Your pixel will be offset by the movement during this 50ms (probably
more) which will be a typically a few centimeters, so edges will get a little
blurry but I'm not a light painter expert.

If it is really a problem, assume pose velocity from the previous frame
positions and correct for latency and turn off the screen if acceleration
sensor is greater than a value.

~~~
StavrosK
That's true, if you have a phone you can use the sensors on it to do dead
reckoning in the interim. I'm not a mocap expert, but this seems very doable!
It would be a great idea.

------
ebspelman
You might like Golan Levin's lectures on different forms of Experimental
Capture. They are just collections of really good examples and previous work.
He specifically has one about light painting and long exposure:
[https://github.com/golanlevin/ExperimentalCapture/blob/maste...](https://github.com/golanlevin/ExperimentalCapture/blob/master/docs/longexposure.md)

~~~
StavrosK
Some of these are mesmerizing, thank you for sharing.

------
ww520
Nice execution on the idea.

I remembered seeing those LED painted images. Have just checked Youtube and
they have come a long way.
[https://www.youtube.com/watch?v=OkMj1bt96Cc](https://www.youtube.com/watch?v=OkMj1bt96Cc)
[https://www.youtube.com/watch?v=gEa7R7BRUj4](https://www.youtube.com/watch?v=gEa7R7BRUj4)

------
Jarwain
Looks great! It actually reminds me of these LED staffs or POI that some
spinners use. It's conceptually similar; you can get some pretty cool images
from a long exposure where someone is spinning. However, the image is somewhat
visible to the naked eye just from the speed at which these Poi are spun.

[https://youtu.be/4N2XH1Gx8dQ](https://youtu.be/4N2XH1Gx8dQ)

~~~
StavrosK
Unfortunately that video isn't available here, are they POV POIs? Do they
project an image in the air according to their angular velocity?

~~~
Jarwain
Yeah, POV poi, or LED Poi should be valid Google queries

I think some project an image based on their Angular velocity, others might
just be timer-based. Here's a link to a product I've had my eyes on for a
while ([https://ignispixel.com/store/poi-pro/ignis-pixel-
poi-256-hd](https://ignispixel.com/store/poi-pro/ignis-pixel-poi-256-hd)) the
video there should work.

------
kelvin0
Great work, very well executed. But I have one question: if a person is moving
the stick around while capturing, how do you remove the person and keep only
the LEDs in the final 'painted' picture?

~~~
roddds
Since there's very little light hitting the person at any given point during
the taking of the picture, they're usually visible as a very faint blur, or
just not at all.

------
NKosmatos
Nice one Stavro!!! It's been some time since your last side-project, but this
one is just great. Perfect bridge of technology, photography and art. Do you
plan to share the code and BOM for Ledonardo?

~~~
StavrosK
It has, yes (at least the ones I posted). I can definitely open source the
code if there's interest, I didn't initially just because there's a password
committed in the firmware. The BOM isn't interesting at all, it's just a WeMos
D1 mini with a microSD shield, and the LED strip is connected to that and
powered by two 18650 batteries in parallel.

~~~
skypanther
I'd love to see your code. In particular, I'd like to see what you did with "
_I could just directly assign the data I read from the SD card to the internal
buffer of the LED library instance and display it._ "

~~~
StavrosK
Oh, that's just this:

    
    
        self._np.buf = column
        self._np.write()
    

Where column is a list of RGB (or RBG) pixel values like [128, 255, 0, 255, 0,
0, 128, 15, 200].

------
defined
Great article, and I love the blend of art and technology. You are so often
doing projects that involve visual, physical, and conceptual creativity; sort
of concretizing the abstract into aliveness.

~~~
StavrosK
Thank you! That's kind of my goal, so I'm glad to hear you confirm it.

------
tnolet
Reminds me of the Flaming Lips stage show where they a huge amount of
flexible, LED strips as a backdrop going through all kinds of animations as
the show progresses.

~~~
dekhn
I built one of these to get more experience with FadeCandy (a small board that
will drive 8 x 64 neopixels).

I ended up building a 64x64 (4096 or 4K) display that did 30FPS, you could
drive it with all sorts of different things including scraping screen pixels
or sending a webcam output to it.

It consumed a bunch of power (500W) and was a bit clunky but a friend rebuilt
it and I think it made it to burning man this year (and came back too dusty to
use).

------
rmbryan
That's fun to read! Thank you for the excellent write-up.

~~~
StavrosK
Thank you! I'm glad you enjoyed it, I'm half worried everybody just skims the
photos on these things :P

------
fredley
This looks great! Really impressive results! Have you considered attaching the
light strip to a steady-cam type rig to minimise the amount of wobble?

~~~
StavrosK
Thank you! I have, but that might be a bit overkill. Maybe a flexible handle
would be nice, but the wobble isn't too bad when you're doing abstract
patterns (it might even add to the aesthetic). I will try a flexible handle
now that you mention it, though, it's a good idea.

------
crtlaltdel
this is neat! my dad is a professional photographer and told me about “light
painting” using super long exposures in a darkened space, wearing all black
and using gelled lights. he had a friend who shot motorcycles, not sure for
whom, but used the method to add colored accents, such as an orange glow
around the engine.

txting him this link, he’s gunna love it!

------
anfractuosity
Lots of very cool photos :)

Have you thought of also doing video with it, via stop frame animation,
although that could be very time consuming!

~~~
StavrosK
Hmm, how do you see that working? Wouldn't it just look like normal video?
You'd see each "slice" in the air, rather than a complete image.

~~~
anfractuosity
I mean still do the long exposure as you're doing for your stills. And use
say, 25 long exposure photos per second for the video.

But make the patterns animated, so for example with
[https://www.stavros.io/posts/behold-ledonardo/maria-
small.jp...](https://www.stavros.io/posts/behold-ledonardo/maria-small.jpg)
you could have the light appear to rotate around the lady.

I imagine it'd be extremely slow work, creating enough photos though!

~~~
StavrosK
Oh, I think you can just take the video and do that in post, actually! I will
have to try it, it's a very nice effect.

------
Grollicus
On this years CCCamp they put a strip like this on a lamppost and if you moved
your head around a bit you could see images.

------
vavooom
Incredible art. Can imagine this sort of 'art-tech' becoming popular in
museums and such in the future.

------
amelius
Curious: did some company already create a practical 3D display by moving
these strips fast enough?

~~~
Tepix
I‘ve seen some DIY displays like that and you can buy them for mounting to
bicycles

~~~
amelius
Yes, I know the bicycle displays, they are quite cheap actually. But if you
also move the display in the orthogonal direction, you can create a 3D-effect.
This can't be done using a bicycle.

------
dhlin
How the person who grabs the pixel sticks is removed from the final
photography?

~~~
oldgradstudent
No need to remove anything. The person is orders of magnitude darker than the
LEDs and constantly moves so they contribute little to the exposure at any
point in the frame.

To appear in the final photo, a person would need to remain in place for a
significant amount of time.

------
heyflyguy
I absolutely love the intersection of technology and art, nicely done!!

~~~
StavrosK
Thanks, that's what I love about that project too! I'm trying to come up with
more ideas like this but it's hard, I'm at least glad I had one this good.

~~~
yreg
The photos itself are also very nicely done!

~~~
StavrosK
Thanks, I was very satisfied with the one with the patterns, it really felt
good to see that the project was capable of producing something of artistic
value.

------
klausjensen
Awesome writeup, thanks for sharing.

And the name is brilliant... LEDonardo (giggles).

~~~
StavrosK
Thanks, it doesn't register for many people as the brain skips over the extra
"d" :)

------
apandhi
For an out of the box solution, take a look at the pixelstick

------
2sk21
Wonderfully artistic!

------
herpderp3dtwerp
I have a Pixelstick for sale if anyone is interested.

~~~
dschiffner
interested

------
code4tee
Very cool. I love this physical photo effects stuff.

------
lr4444lr
Great write up.

------
kuu
Wow! Nice effects. Great job!

~~~
StavrosK
Thank you!

------
pvirgiliu
Thank you for sharing this.

~~~
StavrosK
Thanks for reading, I'm glad you liked it!

