The best tools to make your project dreams come true

Login or Signup

Tron Shirts Using Adafruit Pro Trinket


Ever been tasked by your employer to create a Tron shirt for a dog? Well I have, and it was definitely a fun project to break up my daily tasks. This blog will include the Vector files needed for laser cutting the black material, program used to control the NeoPixels, and full bill of materials. As with any project, there are a hundred different ways to create this, but these are the steps I took to complete the project. 

Rach and Schnacks

Let’s start with the electrical components. I used almost two full spools of 1M long neopixel strips that each contained 144 LED’s. The reason I chose the more densely populated strips is because when I tested those vs. the 60 LED strip, I was able to see each individual LED through the shirt with the 60 LED strip which wasn’t the look I wanted.

I used a Pro Trinket 5V version to program the neopixels. To enable the use of a rechargeable battery pack I soldered the Pro Trinket Lithium IonBattery Backpack to the Trinket. The Lithium battery pack I chose had over 6Ah which was more than enough capacity for the time frame I needed the shirts to run.

The hardest part of this project was getting everything lined up. First I took the outer shirt and placed the laser cut pieces of faux leather on in the correct orientation. Then I laid out the neopixel strips, cutting them to length. Once I had them all laid out, I had to run wires to solder the connections back together. This took a bit of time because there were so many solder joints and one needs to make sure the input and output are in the correct direction through the chain.

 Faux Leather Layout

Neopixel Layout 1

Neopixel Layout

Once they were all pieced together, I added hot glue to the solder joints to make them a little more sturdy. I then placed the undershirt backside up beneath the shirt with the faux leather pieces and started to line up the neopixels on it. The reason I placed it with the backside up is so that the breast pocket would be in the back to hold the trinket and battery pack. I had intentions of sewing them on, but ended up hot glueing and they stayed on just fine. To make them a little more sturdy though I would recommend sewing as well.

 Lit Up

That’s it! It was a lot of tedious work, but not very many steps. For the dog shirt I also cut the stomach part and added ties so it would be easier to get on and off without disrupting the neopixels. The code I used is just a modified example code that I have embedded below. You will need to change the number of neopixels for your use. Now, go out and make this but make it even better! Happy Making!

Copy Code
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>

#define PIN 6

// Parameter 1 = number of pixels in strip
// Parameter 2 = Arduino pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
//   NEO_RGBW    Pixels are wired for RGBW bitstream (NeoPixel RGBW products)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(134, PIN, NEO_GRB + NEO_KHZ800);

// IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across
// pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input
// and minimize distance between Arduino and first pixel.  Avoid connecting
// on a live circuit...if you must, connect GND first.

void setup() {
  // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket
  #if defined (__AVR_ATtiny85__)
    if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
 // End of trinket special code

  strip.begin();; // Initialize all pixels to 'off'

void loop() {
  // Some example procedures showing how to display to the pixels:
  colorWipe(strip.Color(255, 255, 255), 50); // White
  colorWipe(strip.Color(0, 0, 255), 50); // Blue
  // Send a theater pixel chase in...

// 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);;

Key Parts and Components

Add all Digi-Key Parts to Cart
  • 1528-1835-ND
  • 1528-1039-ND
  • 1528-1097-ND
  • 1528-1443-ND