DIY LED Ring Light

Trying to get those pixel perfect macro shots on a budget? Build your own DIY low cost ring of light with a NeoPixel Ring and Trinket, Adafruit tiny arduino micro controller. The color and brightness of the LEDs can be programmed to color or pattern!

Photography Lighting

Using the 24x NeoPixel ring as a light ring is a great way to enhance macro-photography. A ring of light provides a spot-light effect, removing shadows caused by the camera getting in front of the subject. In our test shots above the NeoPixel ring projects a ring of light inside the eye.

3D Printing

Transparent PLA

Print the LED cover to soften and diffuse the NeoPixel ring. For most FDM 3D printers, PLA material works with out a heated bed. The extruder should be set to 230c. The model was design to print with out a raft or supports. Below is a small list of places to get PLA. Make sure your filaments diameter size matches your 3d printer. Most common size is 1.75mm and 3mm.

LED Base
About 35 minutes
PLA @230
No Raft
No Support
2 shells
15% Infill
2.0 Layer Height
Enclosure + Cover
About 40 minutes
PLA @230
No Raft
No Support
2 shells
15% Infill
2.0 Layer Height
About 35 minutes
PLA @230
No Raft
No Support
2 shells
15% Infill
2.0 Layer Height
Hinge Connector
About 5 minutes
PLA @230
No Raft
No Support

2 shells
15% Infill
2.0 Layer Height

LED Diffuser
About 20 minutes
Transparent PLA @230
No Raft
No Support
2 shells
15% Infill
2.0 Layer height

Circuit Diagram

Prototyping Circuit

Please be sure to check out NeoPixel Guide to get a better understanding of how to power and work with NeoPixels.

Use a bread board and alligator clips to connect the components together. You will want to solder header pins onto the 5V Trinket for a secure connection when prototyping on a breadboard.
  • GND NeoPixel Ring connects to GND on 5V Trinket
  • IN NeoPixel Ring connects to GIO#0
  • PWR NeoPixel connects to 5V
  • Pin 1 Slide Switch connects to BAT on 5V Trinket
  • Pin 2 Slide Switch connects to Positive wire of JST Extender
  • Negative wire of JST Extender connects to GND on 5V Trinket

Programming Trinket

Please check out the NeoPixel Arduino Library guide to get a better understanding on how to program your own colors and animations.
Download: file
#include <Adafruit_NeoPixel.h>

#define N_PIXELS  24  // Number of pixels you are using
#define LED_PIN    0  // NeoPixel LED strand is connected to GPIO #0 / D0

Adafruit_NeoPixel  strip = Adafruit_NeoPixel(N_PIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {

  //  you can change the brightness to lower if its too bright!
  strip.setBrightness(255);                // Set LED brightness 0-255
  colorWipe(strip.Color(255, 255, 255),0); // fill the strip with all white
  strip.show();                            // Update strip

void loop() {

// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, c);

Setting RGB color values

You can quickly set the color of the LEDs by changing the three values that make up a color. See the "255,255,255" values in the colorWipe line of code, you can change these three values to create a custom color of your choice! The brightness can be adjusted by changing the '255' value in the 'setBrightness' line of code.

24 NeoPixel Ring

Power Circuit

Use the JST extender to create a removable battery circuit. Cut and stripe the JST extender to about 30mm in length. Solder a pin on the slide switch to the positive wire of the JST extender. Use small pieces of shrink tubing to secure and protect the soldered connections.


Measure, cut and strip 3 strips of 30 gauge wire wrap to about 160mm in length. Group together the 3 wires and thread them through the middle hole in the 3d printed base that will hold the NeoPixel Ring.

Connecting NeoPixel Ring

Pull the wires through the base enough to mount the ring with a third helping hand Label each wire and solder them to the appropriate pins of the NeoPixel Ring.

Mounting NeoPixel Ring

Carefully bend the "IN" cable underneath the ring and pull each cable until it's taut. Align the NeoPixel ring into position and use double sided tape to secure the ring to the base.

Connecting Base to Hinge

Snap the hinge on to the base and nest the wires inside the cavity of the connector. Cut a small piece of a paper clip and slide it into the hole of the hinge securing the two pieces together.

Connecting Clip

Attach the clip to the other side of the connector and apply another piece of paper clip joining the three pieces together. Pull the wiring through the clip and leave a little bit of slack so the wires can curve around the inside the cavity of the clip.

Connecting Enclosure

Pull the wiring through the hole on the side of the enclosure and connect it to the clip by sliding it into place. Use electrical tape to secure the wires inside the clip cavity.

Connecting Trinket

Solder the wires to the appropriate pins on the 5V Trinket. GND wire connects to the GND pin while the positive wire connects to the 5V pin. You can choose which GIO pin will connect to the digital out signal of the NeoPixel ring, we used GIO#0. Connect the power circuit to the trinket by soldering one pin of the slide switch to GND and the other pin to the BAT positive pin. The GND pin should be shared to the NeoPixel and the power circuit.

Mounting Trinket + Battery

Carefully position the wired 5V Trinket into the enclosure. Align the USB port to the opening hole at the bottom of the enclosure. Position the 500mAh Lithium battery onto of the trinket wit the power circuit on top.
Plug the battery into the JST extender and insert the slide switch through the top opening by pressing it through the top hole of the enclosure.

Close up the enclosure by snapping the lid on and slide the switch on to power up the ring! The clip snaps onto most DLSR camera lenses such as the 100mm or 24-70mm prime lenses.

Since all-LEDs-on can be really power-consuming, we suggest adjusting the brightness with the NeoPixel setBrightness() command to 100 or less

60 NeoPixel Ring

Bigger and better!
This upgrade turns a 60x NeoPixel Ring into our biggest camera light yet. Featuring a universal hot shoe, the light can mount on ANY camera and ANY lens. This update uses the same micro-controller and battery.

You need 4 pieces of the 60x NeoPixel ring to make a full working LED ring! The pieces themselves do not come soldered together, so you will have to sold them! You can use two third-helping hands to assist in soldering the pieces together. A piece of shrink tubing added to the little grabbers ensure you don't mark up the PCBs.
Start by soldering just two pieces together. Once you've aligned them up, apply a line of solder from one connection to there other. Make two sets of halves and solder those together.
With two halves soldered together, you can orient the ring and the third-helping hands to a comfortable position. Align them up as best as you can and solder these together.
The neoring-60-top.stl and neoring-60-bottom.stl parts are the two pieces that snap together to make the large ring. The neoring-60-cap-top.stl and neoring-60-cap-bottom.stl parts are also two parts that snap together, these are to be printed in transparent PLA to diffuse the LEDs.
Join the two holder parts together by snapping the tabs on the ends together. Carefully insert the 60 NeoPixel ring into the assembled holder. Thread the wires through the hole of the neoring-60-bottom.stl and out the hinge connector.
The box.stl part houses the 500mAh lipo battery and Trinket. At the bottom of the enclosure, the opening with tabs allows the connector.stl part to mount to the hotshot.stl part to the enclosure.
Insert the connector.stl part inside the enclosure, through the bottom opening with the flat end facing up. Apply pressure to the corners of the connector to snap them into place.
Firmly slide the hotshoe.stl part through the connector.stl part were the two sides interlock. The small "T" shape on the side of the hotshoe.stl part meets with the "C" shape of the connector.stl part.

The 500mAh Lithium Ion Polymer battery is small enough to fit inside the box.stl enclosure but only provides about 30 minutes of use when powering 60 NeoPixels at a low brightness (we recommend a brightness setting of 20-ish). For full brightness, you'll need a bigger battery, 2200mAh or higher, or using a USB battery bank.

This guide was first published on Jan 30, 2014. It was last updated on Jan 30, 2014.