There are various ways to attach the light ring to the camera, dependent on the camera used. The lens of the camera must be within the LED circle, and you want to avoid blocking any moving parts or sensors.

Below is a 3D printed solution for attaching to a number of different cameras including a lens barrel and a webcam.

First, we'll mount the rotary encoder to the QT Py. This is based on a method created by Tod "@todbot" Kurt as documented here.

Encoder QT Py

Place a bit of insulation such as Kapton tape on the back of the QT Py to prevent any shorts from metal on the underside of the encoder.

You may also need to bend or clip the retention pegs on the encoder.

Insert the encoder legs into the QT Py from the underside so that these connections are made:

  • Encoder two leg side are in QT Py GND and MO
  • Encoder three leg side are in QT Py A1, A2, A3

Don't solder them yet, first we'll insert the end of the black wire into the same GND pin hole as the encoder leg.


Insert the black wire's end into the same GND hole as the encoder pin.

Solder this pin/wire combo in place, then solder the other encoder pins.

Solder the red wire to the QT Py's 3V pin hole.

Solder the gray wire into the QT Py's MI pin hole.

Wiring Sleeve

For extra style points you can use a length of wiring sheathing or paracord sheath and heat shrink tubing to tidy up the wires before soldering them to the NeoPixel ring.

Remove the core strands from the paracord sheathing.

Insert the wires through the sheath, then cut to pieces of heat shrink tubing length to head and hold the sheath in place.

NeoPixel Ring Wiring

Solder the wires to the NeoPixel ring as shown.

The connections are:

  • Red wire to PWR
  • Black wire to GND
  • Gray wire to Data Input

Light Ring Mount

This light ring mount is designed to fit a variety of lenses on mirrorless cameras and DSLR cameras.

First, download the 3D model files linked below. Print the ring and four of the adjustment blocks. Settings may vary from printer to printer. Below are my key settings, but these are pretty forgiving models, so you should be able to print without too much noodling.

  • PLA filament
  • 0.15mm layer height
  • 30% infill
  • 210º C extruder temperature
  • 60º C heated glass build plate

Add Encoder

Once the ring holder has printed, push the encoder through a mounting hole as shown, then secure it with a nut.

Add Ring

Minding the wiring, insert the ring into the ring holder. It will be a tight press fit.

Only push the ring in until the LEDs are flush to the top of the ring holder -- you can press it onto you workbench to get it seated evenly.


The blocks are held in place with nylon M3 fasteners which will keep them secure but still allow them to slide and grip the lens barrel.

Place the eight short screws through the mounting holes from the front side of the ring.

Thread the eight standoffs onto the protruding short screws.

Use the eight long screws to screw the four 3D printed blocks into their standoffs.

The screw and standoff lengths are such at they should not prevent the blocks from sliding even when the screws are tight.

The gripping blocks freely slide to whatever size lens you need.

Add Elastic Return Actuator (Rubber Band)

Wrap the elastic band around the grooves of each of the gripping blocks.

Attach to Lens

To attach the chromakey light ring to your lens, simply pull the four gripping blocks away from center, press the ring to the end of the lens barrel, and release the gripping blocks.

Prep for Use

Plug a USB-C power source into the QT Py and then select your color mode (green/blue/white/off) by clicking the encoder.

Turn the encoder wheel to increase or decrease the brightness.

Webcam Mount

With a couple of elastic bands you can affix the chromakey light ring to a webcam, such as the popular Logitech C920.

Next we'll set up the retroreflective screen and light it up!

This guide was first published on Mar 10, 2021. It was last updated on Jul 20, 2024.

This page (Build the Chromakey Light Ring) was last updated on Mar 08, 2024.

Text editor powered by tinymce.