r/arduino • • Aug 20 '26

Mod's Choice! A little Teensy4.1 project I've been working on

I am super proud of how this project is turning out. I still have some tweaks to make, but I finally got full videos playing and wanted to share.

This is a "Persistence of Vision" (PoV) display driven by a Teensy 4.1 and SK9822 LED strips.

There are 4 strips of 32 LEDs, each slightly offset in order give me 128 addressable pixel "rows". So each strip is responsible for every 4th row.

360 pixel "columns" around the perimeter makes for roughly square pixels, so thats what i went with. Each LED is updated 360 times every revolution...at around 1500rpm.

A hall effect sensor at the top of the rotor passes by a stationary magnet in the upper frame once per revolution. The Teensy measures the time between the resulting signals, and uses that to calculate how fast it is spinning, and therefore how fast to update the LEDs. This lets the animation look correct regardless of rotor speed.

I have a (currently very slow) python script that resizes/crops and formats .mp4 files into a binary format that the Teensy can use very efficiently. The resulting binary gets saved to a microSD, that the Teensy can read from.

Im happy to answer any questions. I may do a better build/explanation video if there is enough interest.

5.3k Upvotes

203 comments sorted by

78

u/HappyRedEngineer mega Aug 20 '26

That's really nice! Some questions: Is the motor speed controllable? How are you powering the spinning electronics? Any balance issues you had to take care of?

Edit: typo.

75

u/camander321 Aug 20 '26

Good questions!

The silver box with the knob is a 12v PWM motor controller. Im using that to set the speed to whatever feels right. Im thinking of upgrading to a closed-loop bldc system in the future for better control.

That 12v also passes through a high speed mercury slip ring onto the rotor. This part was easily half the cost of the whole build. Each rotor blade has a tiny 5v buck converter embedded underneath to power the LEDs. One of those also powers the Teensy.

I was worried about balance, but it all just kinda worked out. Its not perfect, it could probably be better. But the large diameter bearings im using help a lot

20

u/sparkicidal Aug 20 '26

Oh wow, you went the slip ring route. That’s a professional way of doing things as they’re really expensive.

10

u/tanoshimi Aug 20 '26

How would you send power and data to the components on the rotating part without using a slip ring?

12

u/pants75 Aug 20 '26

Power by brushes on copper rings, data by wireless. But I don't know anything about this stuff TBF.

-2

u/adambomb_23 Aug 20 '26

That’s a lot of data to transmit wirelessly

8

u/cravf Aug 20 '26

*squints in 4k streaming*

6

u/Annual-Advisor-7916 Aug 20 '26

That would be absolutely zero problem. WiFi is capable of multiple Gbit/s nowadays. WiFi 7 has a theoretical limit of 46Gbit.

-5

u/tanoshimi Aug 20 '26

Brushes on copper rings is a slip ring.

3

u/pants75 Aug 20 '26

But you don't need to buy one do you. There's no mercury involved.

→ More replies (4)

4

u/Foxhood3D Open Source Hero Aug 20 '26

Depending on the power requirement. I would probably check if one can get away with using Power transfer coils.

Those can and have been used for Persistence of Vision displays in order to avoid slip rings. Though if they have enough power transferring capability for something with this many leds? idk.

2

u/camander321 Aug 20 '26

I would have needed some pretty big coils, and additional components to smooth out the noise. I looked into it, and it really wouldn't have saved me much for how much complexity it added.

3

u/glx0711 Aug 20 '26

For fast rotations like this you could use a second motor as a generator on the rotating part ;). For the data you could use some wireless connection.

2

u/CrazyCranium Aug 20 '26

You don't need to send data if you just put all the electronics on the spinny bit.

3

u/obxMark Aug 20 '26

Fixed ring of Permanent magnets, with windings on the rotor passing over magnet poles to create a generator. Rectify/regulate on the rotor.

1

u/tanoshimi Aug 21 '26

Interesting idea for the power. But how could you send data like that?

2

u/obxMark Aug 22 '26

radio, optical link, or transformer again. radio might be easiest. transformer or optical I would try at the end of the main axle, working axially. all are complicated by the need to construct frames of data, serialize, apply a modulation code, modulate, then the reverse on receiver.

1

u/CrazyCranium Aug 20 '26

Make it battery powered and put everything on the spinny part.

1

u/ecarlson8 Aug 21 '26

Induction for power and WiFi/RF or optical for data. Or perhaps a battery in the spinning part.

1

u/Cantareus Aug 21 '26

Batteries and motor on the rotating part. Wireless to control. Lower friction and higher rotational inertia. You could use a direct drive brushless motor.

1

u/Zealousideal_Gap629 Aug 21 '26

I am more interested in knowing about slip ring for my another project , which one did you buy(and if I could get a name, website, link anything) and how many tracks it had?

29

u/ldxcdx Aug 20 '26

Man it's been a hot minute since I was Rick rolled. Well done my dude

21

u/Visible-Vermicelli-2 Aug 20 '26

Let's go! Fantastic work

11

u/duckredbeard Aug 20 '26

Thanks for showing us that this can be done. Even if it didn't NEED to be done.

12

u/1kn0wn0thing Aug 20 '26

Can it run Doom?

11

u/camander321 Aug 20 '26

Maybe. Ive been thinking of ways to integrate an esp32 and stream my pc display to it

4

u/WantedBeen Aug 20 '26

It would be awesome if you could stream video over Wi-Fi

9

u/Old-Skoolz Aug 20 '26

Now that's impressive. Good job!

7

u/CaptainPitkid Aug 20 '26

Can it play Bad Apple?

18

u/camander321 Aug 20 '26

6

u/CaptainPitkid Aug 20 '26

Absolutely incredible work

9

u/camander321 Aug 20 '26

Encoding that one as we speak

6

u/monkeymad2 Aug 20 '26

Have you looked into what the actual horizontal resolution limit is? Wonder what it’d look like with 720 columns etc

9

u/camander321 Aug 20 '26

If my math is right, 720 should be pushing the limit, but maybe just barely possible. Theres a hard limit to how fast i can shove bits out and clock the LED strips. I did all my math at 1500rpm, which seems to be the sweet spot where the blades disappear, but slowing things down would give me more overhead.

7

u/gm310509 400K , 500K , 600K , 640K , 750K Aug 20 '26

When you push the data to the strips, are you doing that "manually" through code you have written (or an API like shiftOut)? Or, are you using the DMA controller?

Also, is it configured as just one long strip or four individually connected strips? That is, is it just one long channel or 4 shorter ones?

Nice project, I assume that you have a plan for it beyond the sample video?

10

u/camander321 Aug 20 '26

DMA and FlexIO. Full disclosure, I did have chatGPT help me some with the low level stuff. Its basically shifting 4 bits at a time into a specific shift register which drives 4 very specific gpio pins. Each pin is wired to the data line on a different strip, and then a single clock pulse syncronizes all 4. Hence the slow python formatting/bitpacking script. Every 4 contiguous bits is meant for a different LED strip. The benefit is that the main processor is effectively left idle.

Future plans? No idea really. It might be fun to throw a couple piezo buzzers on there for audio

5

u/Tittytickler Aug 20 '26

Hell yea this is awesome, great work

5

u/MoreLittleMoreLate Aug 20 '26

Everyone watching with no sound can hear this project.

10

u/fredandlunchbox Aug 20 '26

now make the strips horizontal coming out from the axis and add many rows to form a grid and you can render in 3D.

15

u/camander321 Aug 20 '26

I had enough trouble wrapping my head around 2 dimensions

6

u/ripred3 My other dev board is a Porsche Aug 21 '26 edited Aug 21 '26

This was destined to get a "Mod Choice" flair from one of us so let me have the honor!

Your post will also be included in it's own section of the next edition of our Monthly Digest (thank you u/gm310509!) and live in the collection of projects we love

Thanks so much for sharing your project! Great engineering and math ftw 😄

Love the Teensy. 600MHz just makes everything work like it was supposed to instead of playing the "let's overburden the interrupts on a less resourceful processor to the point that there's more time spent in the background than the foreground" 😉

3

u/camander321 Aug 21 '26

Oh wow! Thank you so much!

4

u/mccarthybergeron Aug 20 '26

How does it look in person? Curious your RPM… 3600?

10

u/camander321 Aug 20 '26

1500rpm. It does look better in person, but you'll just have to trust me on that. I had to play with my cameras shutter speed to get a good video, and you can still see artifacts from that.

3

u/mccarthybergeron Aug 20 '26

Oh, I trust you! I explored these systems and building my own 16 years ago. At the time it was so expensive to me I ended up creating 3D printed zoetropes for a film and museums instead of holographics.

Really nice job. What prompted you to explore this?

5

u/camander321 Aug 20 '26

I honestly dont know what prompted this. It sorta just popped into my head while i was bored at work. I started researching if it was possible to make something like this, and suddenly a design was coming together.

7

u/blaaammo_2 Aug 20 '26

“Bored at work” is an unrecognized muse

3

u/BinarySolar Aug 20 '26

Nice! What slip ring are you using?

7

u/camander321 Aug 20 '26

The cheapest i could find thats rated for these speeds is the A2H from AsianTools. Got it on ebaiy for about $85...probably half the cost of the whole build

3

u/wubbalab Aug 20 '26

Interesting project. But wow, $85 for the slip ring is a mean one.

Looks interesting enough to replicate though. I know enough people that would like this.

4

u/rgmundo524 Aug 20 '26

What happens when you look at it from a different angle?

7

u/camander321 Aug 20 '26

Nothing much. It just looks like a 2d video wrapped around a cylinder. Its tiled twice so you can see the same thing on the back side

2

u/p_235615 Aug 20 '26

you mentioned mercury slip bearings, some normal stainless steel bearings on top and bottom, maybe more in parallel would not be an option to transfer power ?

6

u/camander321 Aug 20 '26

Im using a 6805 bearing on the top and bottom of the rotor, and a mercury slip ring to pass power through to the electronics

3

u/p_235615 Aug 20 '26

but couldnt you just use the bearings itself to transfer power ? Did you tried it, or just gone with straight to the slip ring ? Im really curious about how well would the power transfer through standard bearing would work, as those slip rings are not the easiest to come by.

1

u/camander321 Aug 21 '26

I wouldn't send power through a bearing. The grease is an insulator. And with all the moving parts, you're going to end up with a lot of internal arcing. It would likely corrode the bearings pretty fast.

2

u/Bad_Alternative Aug 20 '26

The slight curve really adds to it

2

u/ShadNuke Aug 20 '26

That's really fucking awesome!! I've been thinking of getting into Arduino with my grandson who's going to be 8 next year and he's already advanced a year in school. He's into computers and video gaming, and something like this, I think it would be right up his alley. I'll be showing this to him on Friday when he comes over to spend a few days with? Wife savvy! This has just put me over the fence. I will be doing more research to get him started, come the new year!

2

u/camander321 Aug 20 '26

I hope he enjoys it! Feel free to reach out with any questions!

2

u/ShadNuke Aug 20 '26

Thanks! I've been trying to get him into anything computer, but he's got ADHD, so he only lasts a few minutes with most things. He can sit on Roblox or Minecraft for hours on end designing things, and Google has their old doodles, and one of them had a dungeon designer type game that he absolutely loves. He's designed some ratchet elaborate dungeons with traps and everything.

I've been trying to find that "thing" that he engages with. Arduino is the best of both, hands on and mild programming, so I'm hoping by next year he will be a bit more interested in the hands on stuff. He loves Lego, and I have an old electronics kit that he will sit and make lights light up with simple writing layouts, or make the little elevator go up and down, etc...

So with a little luck, this will be something I can get him to do with me.

2

u/GuyWithRealFakeFacts Aug 20 '26

How does it look from other angles? Do you just wrap the video all the way around or what?

3

u/camander321 Aug 20 '26

Its tiled twice. The same image can be seen on the back side.

1

u/Hothr Aug 20 '26

I hope you post a video showing all the way around it. That's the whole point, isn't it? To show a video 360°?

1

u/camander321 Aug 20 '26

Not really? I promise there isn't much more to see. It looks exactly the same from the opposite side.

1

u/GuyWithRealFakeFacts Aug 20 '26

Makes sense.

I wonder what would happen if you made the LED panels into LED pillars such that each pillar had like 8 columns of LEDs all pointing in a different direction. 🤔 Do you think you'd be able to display 4-8 different videos at once depending on what angle you viewed it from? Or would it just be a blurry mess?

2

u/big_ass_loaf Aug 20 '26

Cool stuff, have you thought about using strips with higher pixel density to get higher definition?

1

u/camander321 Aug 20 '26

Its certainly possible. I'd probably start with faster LED strips first. A lot of the jitter comes from the PWM the strips themselves use internally to control brightness.

2

u/StillLearning85 Aug 20 '26

how are the cables not twisting and ripping while being rotated?

2

u/macgar80 Aug 20 '26

Trzeba dopracować jeszcze amortyzację stopek by drgania silnika nie przenosić na stół ;) ale reszta fajny projekt

1

u/camander321 Aug 20 '26

I did put some squishy tpu feet on there. Really i just need to balance the rotor better

2

u/skyzzzzz Aug 20 '26

I wonder if you could offset the pixels on each bar creating an almost higher resolution. Maybe same idea as mirror shifting in 4k projectors

2

u/camander321 Aug 20 '26

Thats exactly what its doing. Each strip is offset by 1/4 the distance between LEDs

2

u/Latter-Goat8980 Aug 20 '26

Bro even though you’ve been flooded with positivity you deserve to hear you’re a special one🔥🔥 keep the good work up bro no bs

1

u/Tritheone69 Aug 20 '26

This is so good hahahaha well done

1

u/lhamels1 Aug 20 '26

Great work, that's very very cool

1

u/StraightCondition4 Aug 20 '26

Oh wow this is so cool!!

1

u/tronj Aug 20 '26

Super cool! Great job

1

u/felixthekraut Aug 20 '26

Dude, very nice.

1

u/consumer_xxx_42 Aug 20 '26

Wow, just great!

1

u/d3ath_s1gn Aug 20 '26

Great 👍 work

1

u/stokelyFRC Aug 20 '26

This is well done and pretty cool to boot. The Rick Roll was just bonus

1

u/Shereefz Aug 20 '26

You’ve earned the honor of rickrollin all of us

1

u/IFTTTexas Aug 20 '26

It’s that thing from Myst!

1

u/dbrdh Aug 20 '26

That’s never going to let you down…

1

u/nuflark Aug 20 '26

This rules!!!!!

1

u/Key_Evidence39 Aug 20 '26

I think we reached the singularity.

1

u/isunktheship uno Aug 20 '26

Uuuuuuuu biiiishhhh

1

u/blaaammo_2 Aug 20 '26

The Unexpected rickroll - for me at least - made the whole project worth whatever it took you to bring it to us

1

u/Vesper_Noir Aug 20 '26

What is this effect called?

1

u/w00tbox Aug 20 '26

this is so cool. i’d love a longer video / post and if you’d be willing to share more details, i would definitely try something like this in my spare time. amazing work!

my first question would be part sourcing and figuring out compatibility? was it painstaking trial and error process? or just a few changes here and there, compared to your initial planned parts? where did you source?

also a friendly ‘fuck you for the rick roll’ lmao

1

u/sparkicidal Aug 20 '26

Very impressive!

1

u/[deleted] Aug 20 '26

[removed] — view removed comment

1

u/arduino-ModTeam Aug 21 '26

Your post was removed as you did not pass the "Are you human?" test. We strive to be a bot-free community. In the wise words of Wuher, "Hey - we don't serve your kind here".

You'll have to wait outside. We don't want any trouble.

1

u/Tall_Inspector_3392 Aug 20 '26

All that work only to get Rick rolled!

1

u/Otherwise_Spell_7770 Aug 20 '26

I think you just need a couple more layers to even it out and the image will look great it's not bad as it is I probably buy it would've loved this back in the '90s definitely early 2000s

1

u/Any-Quarter-1190 Aug 20 '26

Is that the matrix

1

u/AlternativeNo9069 Aug 20 '26

I’ve never thought about it, but after seeing all the wires and seeing it spin, how do you prevent electrical wiring from twisting up to power something like this?

1

u/SerialBytes Aug 20 '26

i like it! i don't like whats playing on it, but i like it!

1

u/malyit Aug 20 '26

Идеально.

1

u/Melodic_Doubt83 Aug 20 '26

Very cool! I dig the Rick roll!

1

u/tzopper Aug 20 '26

This is awesome.

1

u/Optimesh Aug 20 '26

That’s so cool.

1

u/movinsilently Aug 20 '26

How am I still getting Rick rolled in 2026

1

u/Melcorczfoti Aug 20 '26

That's really cool. I'm wondering what's the highest FPS it could do. Are you thinking about higher resolution ?

2

u/camander321 Aug 20 '26

Ill have to play around more. this clip is running at 25fps, but my math says much more should be possible. The framerate and rotation speed are completely independent, but coincidentally are about the same withis this one. It would be interesting to see how it looks if they were drastically different.

Denser/more LED strips would increase the resolution, but this feels like the sweet spot for effort/complexity/results.

1

u/Melcorczfoti Aug 20 '26

Wow, looks like you really put some thought into it, nice to see that :) Really cool, good luck :D

1

u/stargaz21 Aug 20 '26

Freaking cool, the more densely packed led you have the higher the resolution you get. Awesome work !!

1

u/InternationalPie7229 Aug 20 '26

That’s actually so cool, it’s a shame it sounds like my fan unit after this hot weather we’ve had 🤦🏼‍♂️😂

1

u/LazaroFilm Aug 20 '26

And it starts without playing ads!!!

1

u/Mario_126363 Aug 20 '26

That's mad impressive

1

u/PiDicus_Rex Aug 20 '26

If you put a row of LEDs on the sides and backs of the blade parts, could it do a floating 3D hologram?

1

u/thorfinn_amon Aug 20 '26

The smaller the LEDs the better quality?

1

u/fred3469 Aug 20 '26

This is dope

1

u/joshonekenobi Aug 20 '26

Was not expecting to get Rick rolled this early in the day.

This is impressive!!

https://giphy.com/gifs/DJtjV54B3NMju

1

u/Chanw11 Aug 20 '26

Surprisingly high resolution

1

u/mr_martin_1 Aug 20 '26

Basically like the first televisions that were produced. Just this one comes with far more moving parts - and not necessarily a better quality IMHO.

1

u/Inside-Tumbleweed594 Aug 20 '26

there’s a slight hum…. but otherwise amazing!

1

u/TauKaboutit Aug 20 '26

Hell yea! Awesome work!!

1

u/dedokta Mini Aug 20 '26

SO QUIET YOU'LL BARELY KNOW IT'S RUNNING!

1

u/Electronic_Bit_841 Aug 20 '26

Did it looks that good in irl too? Crazy work bradar

2

u/camander321 Aug 20 '26

You'll have to trust me on this, but it actually looks a lot better in person. I had to play with my cameras shutter speed to get the video as clear as it is.

1

u/Fit_Mouse_8531 Aug 20 '26

Very cool! LIKE

1

u/Much_Complex8561 Aug 20 '26

Thats amazing.great work

1

u/Romouch Aug 20 '26

iiiiiiits soooo fucking coool bro !! Good job !!!!!

1

u/yupidup Aug 20 '26

I didn’t see it coming. Great job, high effort

1

u/-2811 Aug 20 '26

Insanely cool!

1

u/snuggly_cobra 600K Aug 20 '26

First:
https://giphy.com/gifs/twxoPjMpsijwPFBVqs
Second:

Whuuuuuuuuut

Third: I just wanted to tell you how I’m feeling….

1

u/Ange1ofD4rkness Mega/Uno/Due/Pro Mini/ESP32/Teensy Aug 20 '26

I'd be really curious to see that python script. How it breaks down the image and then translates it to this. MANY a questions

1

u/asaltandbuttering Aug 20 '26

Rad. How do you keep the wires from getting tangled as it spins?

1

u/cantinalegend77 Aug 20 '26

I want to see other views of it in action. Like a walk around!

1

u/d4rwiin Aug 20 '26

Is it 4K ?

1

u/ostiDeCalisse Aug 20 '26

That's a fantastic projet, bravo! Do you think there's solution for damping the noise? A closed enclosure maybe?

1

u/Worried-Pangolin1911 Aug 20 '26

Take my fucking upvote

1

u/vitin2009Kin Aug 20 '26

É só eu que ouvi a música?

1

u/jsampler Aug 20 '26

I fuckin knew it. I fuckin. Knew it.

1

u/siberian_knight143 Aug 20 '26

It only took me, .8 of a second, to know what song that was!😂🤣🤣

1

u/DylanRoyleGaming Aug 20 '26

you bastard /s /s /s /s

1

u/Fluid-Let-2545 Aug 21 '26

1500rpm and you got it that stable? My desk fan sounds like a helicopter at half that speed. The mercury slip ring was a smart call though, Ive seen too many diy builds where the wires just slowly strangle themselves over time.

1

u/gauss182 Aug 21 '26

Here's my upvote.. well played..

1

u/Hot-Detective-8163 Aug 21 '26

Cortana will look legit on this

1

u/Walkera43 Aug 21 '26

Amazing design and so well executed.

1

u/mhock103 Aug 21 '26

God damnit

1

u/ian9921 Aug 21 '26

Nice! My senior project was making one of these, but with a whole matrix of LEDs so it could display a 3D image. But we had issues with getting it up to speed without flinging itself apart, and storing all the frames for our 3D model. (EDIT: and also issues with converting Blender models into usable frames)

1

u/vvdb_industries Aug 22 '26

https://github.com/Victor-Field/Andotrope

Reminds me of this hologram I once made.
How are you powering the rotating assembly? A slip ring? when I built mine all the slip rings I could find rated for a suitable RPM where industrial ones so I settled for a battery.

2

u/camander321 Aug 22 '26

Thats exactly the biggest problem i ran into. I found a 2 circuit mercury slipring rated for 1800rpm on ebay for $85. Decided to just spend the money.

Battery would have been my second choice, but thts a lot of mass to add to a fast spinning rotor. And needing to keep it charged when I'm already powering a motor just felt wrong.

Looks like a cool project! Do you have a video of it running?

1

u/ChemSciGuy Aug 22 '26

My POV display does Bad Apple!! but I suppose a Rick Roll is cool too. :)

2

u/camander321 Aug 22 '26

1

u/ChemSciGuy Aug 22 '26

I should have guessed that you already had this loaded up. I suppose I should get mine to do a Rick roll now.

1

u/Plutonium239Mixer Aug 22 '26

No audio with the video? This was not a successful rickroll!

1

u/Deep-Image7903 Aug 23 '26

Quite innovative
Never seen this anywhere else

1

u/SullySylvesterr Aug 23 '26

Awesome build. Reminds me of one of these.

I like to think about, "If i were to build XYZ how would i do it. I wouldnt do it like That De Vinci guy. No, he was a genius, and im a normal dude. So I'd build XYZ with built in fire extinguishers." I use to scare my younger family by sticking my finger in there and acting hurt. I think if some drunk idiot (couldn't be me) where stick a finger in, it might hurt a bit much. Also things can fly off.

Id put some glass over it. Preventative maintenance.

2

u/camander321 Aug 23 '26

I have some acrylic panels i plan to surround this with. Just havent gotten around to it yet

1

u/_carcarah Aug 23 '26

we've all been rickrolled! 🕺

1

u/HVACMECH2025 Aug 24 '26

Thats the most intense, time consuming Rick Roll I've ever seen! Bravo

1

u/Suspicious_Gift_1311 Aug 24 '26

I ain't even mad

1

u/yv-fr Aug 24 '26

What a cool stuff

1

u/NekoLu Aug 24 '26

Wow that's like a dog-tv stool! You can sit on it at the table, and doggo gets to watch Rick Astley

1

u/Various_Respect146 Aug 24 '26

OMG... HOW?!? THATS GENIUS

1

u/JackBanfi Aug 28 '26

That lowk tuff ngl

1

u/FPC29 Aug 29 '26

This looks super smooth! What kind of libraries are you running on the Teensy to handle this? Great job putting it together.

1

u/Amaleshwiz_1 Sep 03 '26

Getting Rick rolled in 2026 is insane

1

u/Reddad1984 25d ago

Muito legal, parabéns

1

u/[deleted] 24d ago

You wouldnt get this from any other guy

1

u/jsweeney2 16d ago

Stick your finger in there see how it goes

1

u/justAChair__ 3d ago

Hell yeah

1

u/[deleted] Aug 20 '26 edited Aug 20 '26

[deleted]

5

u/camander321 Aug 20 '26

I looked it up, and i think theres some more going on with that one. With the way this project works, rotating the frame the opposite way would just make the image rotate with it. All the timing is referenced to the frame.

0

u/imouttaideasforaname Aug 21 '26

First time I got rickrolled by a volumetric display