This project was inspired by my BisexuaLED instructable. It uses 3D printed gender symbols, a Neopixel LED ring, and an Adafruit Trinket to display various pride color patterns. Originally, I hoped to use RGB LEDs for the bi-pride project and provide a variety of cases, but I didn't know how to use RGB LEDs confidently. Thankfully, Adafruit's NeoPixel's make programming different pride colors and patterns easy, even for electronics novices like me ;)
Knowing this, I wanted to make something for the broader LGBTQIA+ community in addition to the BisexuaLED project. Although I recognize that I'm privileged as a visibly white cisgender man, I consider myself a feminist ally to many who identify along a broad spectrum of genders, races, and sexual identities. I am aware that for many of these friends and allies, their identities are not always as visible as my own, hence the need for a project that represents this diverse spectrum of gender and sexual identities. Therefore, I included several members of the LGTBQIA+ community while designing this project to best suit their desires regarding cases and pride colors.
I welcome your constructive feedback, critique, and remixes! Let's make some lights!
Total Time: 3-6 hours
Skills Needed: Soldering, 3D printing, Arduino programming (if modifying the provided code)
Approximate Hardware Cost: $33 (Trinket + NeoPixel Ring + Power Supply + Headers)
Step 1: Materials
- Safety Goggles
- Wire stripper
- Wire cutter
- Soldering iron
- 3D printer (if printing enclosure yourself)
- Box cutter, Exacto knife, file, or sandpaper (for trimming and fitting printed parts)
- Solder sucker/braid for soldering mistakes
- Helping hand
Materials and Components
- Wire (I used 3 colors of 22 AWG solid core wire)
- Trinket 5V
- 12, 16, or 24 LED RGB NeoPixel ring (I'm using a 16 LED RGB for this Instructable)
- 5V power supply with Micro-USB connection (I used this one)
- Short Female Headers (preferred) (you'll also need a pair of pliers if you use headers)
- Preferred Enclosure of appropriate size (12, 16, or 24 LED version)
- Optional: 1000 uF capacitor and a 300-500 Ohm resistor
Step 2: Before Continuing...
Before continuing with this project, you'll need to (download and install the Arduino IDE), add support for Trinket (detailed in the same guide) and (install drivers for the Adafruit Trinket if you're using Windows). Additionally, if you're unfamiliar with NeoPixels or haven't previously installed the NeoPixel library for Arduino, check out Adafruit's guide.
Step 3: Print Your Enclosure of Choice
You'll need to print your preferred case and base from my Thingiverse collection (or modify/design as you please)
I printed a female case for a friend using Printrbot's "Natural" translucent PLA filament at 0.2mm layer height to balance the visibility of the LEDs, print time for the case, and the surface finish. This project should work with any filament though, even if it's a solid color, but you might need to adjust the print settings for LED visibility. My print settings for each case are included in their Thingiverse descriptions. I was able see the neopixel ring through the case when it's turned off, but I was okay with that. If you prefer a more diffuse glow and don't want the ring to be visible from the outside though, you can always sand the front of the case gently (or insert the neopixel ring facing the rear of the case).
Step 4: Program the Trinket
- Download (or copy and paste) the code for your preferred pride pattern from the bottom of this step.
I'm not the best coder in the world, but I tried to modify and develop a range of patterns for different identities. If you spot a bug or have an idea for a pattern, please optimize, share, remix, and build on this code to your heart's content!
- Open the .ino file or copy and paste the code into a new Arduino sketch.
- Adjust two key settings within the sketch, PIN (the output pin) and the number of pixels:
- PIN, in line 6, defines the output pin for the trinket (I used "0"). This value needs to match the output pin you connect/solder to in Step 7, otherwise, the lights won't display.
- The number of pixels in the ring is defined as an argument in line 16. I used 16, since I'm using a 16-LED neopixel ring (24 for a 24 LED ring, 12 for 12, etc.)
If all goes well you'll receive a confirmation message in the Arduino IDE, and your trinket is programmed! You still won't see any flashy light patterns, but don't worry since we'll test that everything is working in Step 7.
If you saw an error message in the Arduino window, see the Adafruit Trinket guide for troubleshooting common errors.
Step 5: Solder Leads to the Neopixel Ring
- Cut one length of jumper wire to about 3 inches, and two more lengths to about 4.5 inches each. The shorter wire will be the 5v power lead, while the two longer pieces will be for ground and data input. (I didn't do this correctly the first time and I cut all three wires to 3 inches... I had to extend them later. This made it hard to feed the wires through the case because of the bulky heat shrink coating, but after a little drilling I fit them through.)
- Using wire strippers, strip 1/4 inch of insulation from each end of the three wires.
- Note: Make sure to place the leads for the wires through the front of the ring and solder on the back, as pictured to avoid accidentally shorting any LEDs!
- Place the short wire through the Power 5V DC hole of the neopixel board (from the front), and solder in place as shown.
- Place one end of one of the longer wires through the front of the Power Signal Ground hole in the neopixel board as shown, and solder.
- Place the second long wire through the Data Input hole of the neopixel board (from the front), and solder in place.
- Trim any excess wire that is sticking up from the board.
- Optional: Adafruit recommends soldering in a 1000 uF capacitor on the power wire, and a 300-500 Ohm resistor on the data input wire to "reduce NeoPixel burnout risk." I skipped this step in my build since I haven't had any issues with this small, low-power project. But, I'm still new to electronics, so YMMV. That said, there should be enough room in the case to add in a capacitor and resistor as long as you plan ahead when soldering, though the components may get a bit warm.
Step 6: Solder Headers to the Trinket
This step is technically optional, but it makes things easier to assemble and lets you swap the case without having to resolder everything. Plus, I might want to reuse the Trinket for future projects ;)
If you really want to solder a connection directly to the Trinket, skip to Step 7 for assembly (or Step 8 for prepping the enclosure), and then return to Step 4 to test the program.
To attach the headers:
- Count how many headers you need from the strip. I cut them to length (five) for each side of the trinket since I'll reuse this board later.
- Remove the next pin in the header with a pair of pliers (e.g. if you need 5, remove the pin from the 6th slot).
- (Remember to wear safety goggles!) Cut the empty spot with wire cutters and file the rough edge.
- Line up the pins with the holes in the Trinket, making sure the plastic side is up (on the same side as the Trinket reset button).
- Solder the pins in place. This can be done a little more easily by connecting the male headers that come with the Trinket to the female headers, and putting everything upside down in a breadboard, cardboard, foam, etc. (see picture above).
Step 7: Connect the NeoPixel Ring and Trinket
Note: If you are not using female headers on the Trinket, skip ahead to Trimming and Assembly before soldering!
- Connect the Ground wire from the neopixel ring to the Gnd (ground) pin of the Trinket.
- Connect the Data Input wire from the ring to #0 on the Trinket (or your preferred data out pin)
- Connect the Power 5V DC wire from the ring to the 5V pin of the Trinket
- In order to avoid frying anything, before powering the Trinket, make sure to double check that you've connected the correct wire to each pin (e.g. ground to ground, data input on ring to 0 on trinket, power to power).
- Connect the Trinket to the 5V power supply.
- Plug in the power supply, and you should see a colorful pattern of lights! Now that you know the circuit works, it's time to assemble everything.
Troubleshooting (if things didn't light up)
- If the lights aren't blinking correctly, unplug the Trinket from the wall and double check your connections.
- If the connections are okay, plug the Trinket back in and hit the "reset" button.
- If it still fails, check to make sure the program uploaded correctly and that you adjusted the settings properly within the code.
- If you don't see a blinking red light on the Trinket after hitting "reset" and nothing is working, the board might've been fried or damaged during soldering, and you'll probably need a new Trinket :(
Step 8: Trimming the Enclosure
The 3D printed case has pretty tight tolerances since it's a press-fit design, so you'll probably need to trim and sand away some of the excess plastic. Remember, it's easier to trim away a little and then check if it
fits, rather than cutting too much (don't force anything either, PLA snaps). You shouldn't need to cut more than about a millimeter from any part. You'll likely need to sand or trim the areas shown above.
Step 9: Assemble the Enclosure
Now that your neopixel ring circuit is working and your case is finished, it's time to assemble everything.
Note: If things don't fit together easily, don't force them! PLA snaps rather than bending, so if the fit is too tight, sand away a little more plastic and try again.
- Disconnect the neopixel wires from the headers on the Trinket, noting the color of each wire for re-assembly.
- Place the neopixel ring inside the case, with the LED's facing down and the wires wrapped to the back side of the ring (as pictured above).
- Snap the case cap into place, ensuring everything fits properly. If things are too snug, try adjusting the wires or trimming the case a bit.
- Route the wires from the gender case through the hole in the base.
- Snap the assembled case into the base.
- Reconnect the wires from the neopixel ring to the Trinket. Note: If you didn't use headers, connect the wires from the neopixel ring to the Trinket and solder (ground to ground, 5v to 5v, data input to #0 on the Trinket).
- Slide the Trinket into the middle slot in the base cap.
- Attach the power supply cable to the Trinket.
- Slide the base cap over the base.
- Plug the power supply into an outlet.
- Take pride in your accomplishment, show off to your friends and allies, and bask in the bright glow of your LGBTQIA+ gendered pride light!