Jon Thomasson's Build Log


Been working on a fidget spinner POV (persistence of vision) project recently. I had a niece and nephew bring one over a few weeks back and it seemed like the platform was just begging for some blinking leds. In this version I’m using the 2 wing style fidget spinner, with a cr2032 battery on each end to provide the balancing weights. The batteries are wired in parallel to provide the power for the AtTiny85 microcontroller along with the 5 leds. I’m planning on using the bootloader for the Adafruit Trinket to program the micro via the micro USB connector.

For the center bearing I’m using an R188, which is about half the size of the more popular 608 bearings that most of the fidget spinners use. The advantage I found with the R188 is that it provides more clearance for tracks to run around it.The other advantage that the R188 provides is that it provides longer spin times.Here’s what the board looks like in its current iteration:




I also have a project page for it setup here:


Awesome! I just saw a blinky one last night, and it caught my curiosity. Don’t think it did POV though, so that should be really fun!

I cloned and check out your schematic on your latest rev e (shown below). Doesn’t look like it has an inertia sensor. How will it know which speed to display the LED output?


Looks great. I’ll follow along. Saw some of the folks in our Orlando sister makerspace getting ready to do POVs.


Thanks @ChrisGammell! If nothing else, this will hopefully have some blinky lights to impress my kids. You are correct, this version doesn’t have an inertia sensor of any kind. I was hoping to just adjust the delay loop in the code to get the timing right for an average spin speed. But it could be that I need to put in an accelerometer or something in version 2. I will find out in a week or two when the boards arrive! Either way it’s been a fun learning experience for me.

There’s another potential problem with my design. The center bearing in most fidget spinners seems to be friction fit. In my design, I was intending to also have the bearing friction fit up against the pcb wall. However, there seems to be some folks in the hackaday threads that question whether this will work. If it doesn’t work, my backup plan is to use some kind of adhesive, maybe crazy glue or something to keep the bearing in place. I added some solder tabs around the bearing hole in an early version, thinking maybe I could secure it with solder. But I’m questioning my ability to get a strong solder joint on something that large. Do you recall how they solved that problem in the blinky version you saw last night? Thanks for checking out the project!


@mkchronos - Thanks for following along! This is my first POV project, so i’m expecting a bit of a learning curve for me to get it just right.


It was pretty intense, it was two of the engineers from inventables (makers of the carvey). I think it was press fit though.

If you end up needing to glue it, check out this site, cool resource for gluing things:


Thanks for the glue link. That will definitely come in handy at some point.


Perhaps, instead of an accelerometer, you could integrate a rotary encoder in place of the bearing?


Here’s a video of it, but it’s hard to tell how the bearing was attached:


@1.21Gigawatts - Thanks for the idea! There must be a clever way to get the rpm. I was also thinking of possibly just using a light sensor mounted in such a way as to pick up when the sensor passes in between the fingers during rotation.


The only reason I suggested some form of rotary encoder was to be able to get direction as well as rpm. Displaying text for instance would require the pattern to be reversed depending on the spin direction.


Thanks for the link to the video. It looks like they have a row of about 10 leds from the looks of it. It’s mesmerizing to watch. That happy hour looks like a blast!


That’s a good point @1.21Gigawatts. I hadn’t really thought about the need to check direction, but what you said makes perfect sense. I imagine that left handed people might spin it opposite to right handed too. There’s really a lot to think about with these little POV displays that I hadn’t originally considered.


I don’t know how practical it would be but one idea that comes to mind would be to have a smaller circular board, slightly larger that the bearing, that would be held in place by a retainer pressed into the inner race. This board would have a pattern of plated copper pads that would face the main board. On the main board would be photo-sensors that could detect these pads. You could even put some artwork on the silkscreen of the smaller board.


@1.21Gigawatts I like that idea. It got me thinking a little bit and the circular board you’re describing looks a lot like these little spinner caps:

The caps go through the middle of the bearing and provide a place for your fingers when spinning the spinner. But using your idea, we could do something possibly as simple as marking the bottom of the cap with a black permanent maker at a few predefined points that the photo sensors could detect.


I wonder if it would be possible to use a single photo diode along with the markings on the spinner cap to achieve both direction of rotation and rpm? RPM, it seems wouldn’t be too tough. But direction maybe could be achieved by analyzing the pattern of dots and dits on the bottom of the cap possibly?


While you could possibly use a marker and draw on the cap it would probably be more robust to print the pattern on a piece of paper or film and attach it to the under side of the cap. Obtaining direction would be a challenge with just one photo detector. The standard method would be to use quadrature encoding. You would need two photo detectors offset by half the width of the lines on the cap. The narrower the lines the more lines you can have and therefore the more resolution for determining position and speed of rotation. But narrow lines would require photo detectors with narrow apertures. So I would suggest using lines/spaces that were at least a few millimeters wide and offset the photo detectors by half the line width. Decoding quadrature is pretty easy but you would need two inputs available on your processor.

What are Quadrature Encoders
Decode a quadrature encoder in software


Thanks for that detailed response on quadrature encoders. Those things are really fascinating how they work. It looks like I may be upgrading my micro to something with more gpio for version 2 to accommodate both direction and speed.


I was thinking this morning that maybe if I charlieplexed the leds I could free up some io pins for the photo detectors.


Good idea, but I think it would be very difficult to achieve. Multiplexing, or charlieplexing, uses POV to makes LEDs appear constantly illuminated even though they are briefly turned off in order to turn on other LEDs. The observer simply sees the LEDs as being on or off. But in your case the timing of turning one LED off and another on when the LEDs are in motion would affect their relative positions.

Have you seen this? Particularly from 1:32 to about 5:10.