I finally declared my recent project, a replica of Tony Starks Arc reactor, finished. This was one of the projects I had planned with which I justified buying a 3D printer so I felt an obligation to finish it.

Arc Reactor MK1

All 24 LEDs in this rector are individually addressable via shift registers. My goal was to have some faint waft in the lights, but I curently only have them on at one brightness level. Since the shift registers are undersized for the amount of current that the LEDs use, I did have to time-slice the LEDs so that they are on half the time (and the big 5mm LEDs in the center only a quarter of the time).

Most of the parts are 3D printed in a modular fashion.

Base Plate being 3d printed

Printing the base plate felt awesome as I had been pondering the project for a while and finally saw it come to life.

Baseplate with LEDs

Putting the LEDs into the holes turned out to be harder than expected because I hadn’t bothered looking up the diameter of the LEDs. When I measured them I was off by a 1/10th of a millimeter and didn’t think that those would likely be round numbers (3mm and 5mm in this case). :facepalm:

So I had to force them in, and one LED even snapped in half.

Arc Reactor Proof of Concept

The copper windings actually hold the transparent ring in place. Unfortunately this made winding the coils much more finicky. In a next iteration I would just glue them into place.

All three shift registers are put in series. Initially I only started addressing 8 LEDs at once and then shift the next 8 LEDs in. This looked already awesome but I wanted all of them to be individually addressable. When I started pushing 24 LEDs in before making them take effect(latch), it started to flicker quite badly. As it turned out the digital_write function of Arduino is just too slow for such tight loops. As soon as I replaced digital_write with direct register access e.g. PORTB ^= (-singlebit ^ PORTB) & (1LL << PB0); the flickering became completely imperceptable.