# Fiber Optic Whip

## Introduction

https://youtu.be/1V3Tf-m23Q4

This whip makes me feel like I'm dancing with a thousand fireflies.

Its light source is a neopixel jewel, with seven addressable pixels allowing for an amazing array of color changes and animations. &nbsp;The end-glow fibers dance around in the air and create a whirl of color points that is mesmerizing to watch and incredibly fun to play with. &nbsp;I&nbsp;never want to put it down.

The handle is 3d printed and fits the battery and&nbsp;all the electronics inside. &nbsp;There's a button for changing modes and an on-off switch. &nbsp;It's got an onboard battery charger too, so you can play with it for hours and then recharge by plugging in a USB cable.

![](https://cdn-learn.adafruit.com/assets/assets/000/046/701/medium800/led_pixels_LED_Whips-2.jpg?1505946436)

### Difficulty&nbsp;Level

This project requires decent soldering skills and the ability to upload code with the Arduino IDE. &nbsp;It's also a little fiddly to get everything situated in the handle correctly.

You don't need mad coding skills -- you can copy and paste&nbsp;the code into your IDE and use it as-is. &nbsp;

Also don't worry if you don't have a 3d printer! &nbsp;There are services available that will print the handle and ship it to you.

![](https://cdn-learn.adafruit.com/assets/assets/000/046/694/medium800/led_pixels_fibers.jpg?1505944546)

# Fiber Optics

Fiber optics are fiddly beasts. &nbsp;You can order them in bulk online but lining them up with the light source is hard -- to do it right you need specialty tools like a hot knife and fancy connectors. &nbsp;

I left that part of it to the pros, and ordered [this pre-assembled fiber optic bundle from Weidamark](http://www.wiedamark.com/14420FT3SizeStrandBundledFiber.aspx). &nbsp;Shop around on the site -- there are several different options for cable length and number of fibers. &nbsp;The&nbsp;12 foot, 144 strand bundle is what I used. &nbsp;

# Parts & Materials
### Adafruit Pro Trinket - 5V 16MHz

[Adafruit Pro Trinket - 5V 16MHz](https://www.adafruit.com/product/2000)
 **Deprecation Warning: The Pro Trinket bit-bang USB technique it uses doesn't work as well as it did in 2014, many modern computers won't work well. So while we still carry the Pro Trinket so that people can maintain some older projets, we no longer recommend it.** Please...

In Stock
[Buy Now](https://www.adafruit.com/product/2000)
[Related Guides to the Product](https://learn.adafruit.com/products/2000/guides)
![Trinket wired up to two servo motor pan-tilt kit.](https://cdn-shop.adafruit.com/640x480/2000-00.jpg)

### NeoPixel Jewel - 7 x 5050 RGB LED with Integrated Drivers

[NeoPixel Jewel - 7 x 5050 RGB LED with Integrated Drivers](https://www.adafruit.com/product/2226)
Be the belle of the ball with the NeoPixel Jewel! &nbsp;We fit seven of our tiny&nbsp;5050 (5mm x 5mm) smart RGB LEDs onto a beautiful, round&nbsp;PCB with mounting holes and a chainable design to create what we think is our most elegant (and evening-wear appropriate) NeoPixel board...

In Stock
[Buy Now](https://www.adafruit.com/product/2226)
[Related Guides to the Product](https://learn.adafruit.com/products/2226/guides)
![NeoPixel Jewel - 7 x 5050 RGB LED wired to Trinket, lit up rainbow](https://cdn-shop.adafruit.com/640x480/2226-01.jpg)

### Adafruit LiIon/LiPoly Backpack Add-On for Pro Trinket/ItsyBitsy

[Adafruit LiIon/LiPoly Backpack Add-On for Pro Trinket/ItsyBitsy](https://www.adafruit.com/product/2124)
If you have an ItsyBitsy or Pro Trinket you probably know it's the perfect little size for a portable project. This LiPoly backpack makes it really easy to do! Instead of wiring 2 or 3 boards together to make a charging system, this little PCB sits on top of the PCB and allows a...

In Stock
[Buy Now](https://www.adafruit.com/product/2124)
[Related Guides to the Product](https://learn.adafruit.com/products/2124/guides)
![Angled Shot of the Adafruit LiIon/LiPoly Backpack Add-On for Pro Trinket/ItsyBitsy.](https://cdn-shop.adafruit.com/640x480/2124-09.jpg)

### Metal Ball Tactile Button (6mm) x 10 pack

[Metal Ball Tactile Button (6mm) x 10 pack](https://www.adafruit.com/product/3347)
Add some steely elegance to your project with these **Metal Ball Tactile Buttons**. They've got a nice industrial shine to them along&nbsp;with a light blue underbelly. Not only do they look good, but they're also good if you have an actuator that will be pressing the...

In Stock
[Buy Now](https://www.adafruit.com/product/3347)
[Related Guides to the Product](https://learn.adafruit.com/products/3347/guides)
![Angled closeup of single 6mm metal ball tactile button.](https://cdn-shop.adafruit.com/640x480/3347-00.jpg)

### Breadboard-friendly SPDT Slide Switch

[Breadboard-friendly SPDT Slide Switch](https://www.adafruit.com/product/805)
These nice switches are perfect for use with breadboard and perfboard projects. They have 0.1" spacing and snap in nicely into a solderless breadboard. They're easy to switch no matter what size fingers you have, but not so easy that they'll get flipped by accident. Work great as...

In Stock
[Buy Now](https://www.adafruit.com/product/805)
[Related Guides to the Product](https://learn.adafruit.com/products/805/guides)
![Small, black, SPDT slide switch.](https://cdn-shop.adafruit.com/640x480/805-03.jpg)

You'll also need the [fiber optic bundle](http://www.wiedamark.com/starceilingfiber.aspx) and a 3d printed handle. &nbsp;I also added a [wrist strap](https://www.amazon.com/OP-TECH-USA-1801021-Strap/dp/B000H02B6O/ref=sr_1_7?s=electronics&ie=UTF8&qid=1505510399&sr=1-7&keywords=camera+wrist+strap) to minimize dropping.

# Tools

- Soldering Iron & accessories
- Heat shrink tubing
- Hot glue gun
- Gaffer's tape or duct tape
- USB cable

![](https://cdn-learn.adafruit.com/assets/assets/000/046/695/medium800/led_pixels_assembly.jpg?1505944645)

# Fiber Optic Whip

## Wiring Diagram

![](https://cdn-learn.adafruit.com/assets/assets/000/046/585/medium800/led_pixels_whip_wiring.jpg?1505541443)

# Wiring

The LiPoly backpack sits neatly on top of the Pro Trinket with the three pins (BAT, G, 5v/BUS) aligning. &nbsp;

To enable the on/off switch capability, cut the trace between the two switch pads with a utility knife.

Power the Neopixel Jewel by soldering to the two power pads on the **back** of the Pro Trinket.

# Fiber Optic Whip

## The Code

### Software Setup

If this is your first time using Pro Trinket, take a look at [Introducting Pro Trinket](../../../../introducing-pro-trinket/overview)&nbsp;to get a guided tour. &nbsp;&nbsp;

Once you've got your Pro Trinket&nbsp;up and running with [Arduino](../../../../getting-started-with-flora/download-software), you'll need to install the FastLED library. &nbsp;(`Sketch > Include Library > Manage Libraries...`)

### Libraries? Why? What's a Library?

In a nutshell, Arduino libraries&nbsp;have&nbsp;a lot of pre-written functions that make your neopixels easy to command. &nbsp;You can do fancy stuff without being a code guru. Yay Libraries!

FastLED is a fast, efficient, easy-to-use Arduino library for programming addressable LED strips and pixels. &nbsp;It has a lot of features to get your animations up and running fast -- and it has a lot of code samples available if you're just learning to code.

[All about Arduino Libraries](../../../../adafruit-all-about-arduino-libraries-install-use/arduino-libraries)&nbsp;will&nbsp;tell you everything you ever wanted to know about libraries, including more detailed installation instructions.

Once your curiosity is satiated and your library is installed, copy and paste the code into your Arduino window.

Go to your Tools menu and select "Pro Trinket 5V USB"&nbsp;from the list of boards. &nbsp;Plug your&nbsp;Pro Trinket&nbsp;into your computer via the onboard USB port. &nbsp;Press the "reset" button on your Pro Trinket and wait for the blinky red light, then click the upload button in Arduino.

```auto
//Code by Erin St. Blaine for Adafruit.com

#include <FastLED.h>

#define LED_PIN    5
#define COLOR_ORDER GRB
#define NUM_LEDS 7

int HUE = 0;
int SATURATION = 255;
int BRIGHTNESS = 255;
int STEPS = 7;  

const byte BUTTON_PIN  =  3;
uint8_t gHue = 0; // rotating "base color" used by confetti

CRGB leds[NUM_LEDS];
TBlendType    currentBlending;
CRGBPalette16 currentPalette;

//BUTTON SETUP STUFF
byte prevKeyState = HIGH;         // button is active low

unsigned long keyPrevMillis = 0;
const unsigned long keySampleIntervalMs = 25;
byte longKeyPressCountMax = 80;    // 80 * 25 = 2000 ms
byte longKeyPressCount = 0;

int ledMode = 0;  //FIRST ACTIVE MODE


//------------------SETUP------------------
void setup()  
{
  delay( 3000 ); // power-up safety delay
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  FastLED.addLeds<WS2812B, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
  FastLED.setBrightness(  BRIGHTNESS );
  currentBlending = LINEARBLEND;
 
}
  
#define NUM_MODES 6
//------------------MAIN LOOP------------------
void loop() {
    switch (ledMode) {
       case 999: break;
       case 0: confetti(); break;
       case 1: currentPalette = OceanColors_p; rainbow(); break;                    
       case 2: currentPalette = LavaColors_p; rainbow(); break;   
       case 3: currentPalette = ForestColors_p; rainbow(); break;
       case 4: currentPalette = PartyColors_p; rainbow(); break;
       case 5: currentPalette = RainbowColors_p; rainbow(); break;
       case 6: currentPalette = RainbowStripeColors_p; rainbow(); break;
       case 888: ledMode=0; break;
       } 
       
        // key management section
    if (millis() - keyPrevMillis >= keySampleIntervalMs) {
        keyPrevMillis = millis();
        
        byte currKeyState = digitalRead(BUTTON_PIN);
        
        if ((prevKeyState == HIGH) && (currKeyState == LOW)) {
            keyPress();
        }
        else if ((prevKeyState == LOW) && (currKeyState == HIGH)) {
            keyRelease();
        }
        else if (currKeyState == LOW) {
            longKeyPressCount++;
        }
        
        prevKeyState = currKeyState;
    }
       
   EVERY_N_MILLISECONDS( 20 ) { gHue++; } // slowly cycle the "base color" through the rainbow    
   FastLED.show(); 
   FastLED.delay(20); 

}     


//BUTTON CONTROL STUFF
// called when button is kept pressed for less than 2 seconds
void shortKeyPress() {
    Serial.println("short");
    ledMode++;
    if (ledMode > NUM_MODES){
    ledMode=0; }
}


// called when button is kept pressed for more than 2 seconds
void longKeyPress() {
    Serial.println("long");
    ledMode=888;
}


// called when key goes from not pressed to pressed
void keyPress() {
    Serial.println("key press");
    longKeyPressCount = 0;
}


// called when key goes from pressed to not pressed
void keyRelease() {
    Serial.println("key release");
    if (longKeyPressCount >= longKeyPressCountMax) {
        longKeyPress();
    }
    else {
        shortKeyPress();
    }


    // other code goes here
}

     
// SOLID ----------------------------------------------------
void solid()
{
 
  fill_solid(leds, NUM_LEDS, CHSV( HUE, SATURATION, BRIGHTNESS));     
  FastLED.show();
   
   }
   

void rainbow()
{
  
  static uint8_t startIndex = 0;
  startIndex = startIndex + 1; /* motion speed */

  FillLEDsFromPaletteColors( startIndex);

  FastLED.show();
  FastLED.delay(20);
  
  }

//this bit is in every palette mode, needs to be in there just once
void FillLEDsFromPaletteColors( uint8_t colorIndex)
{ 
  for( int i = 0; i < NUM_LEDS; i++) {
    leds[i] = ColorFromPalette( currentPalette, colorIndex, BRIGHTNESS, currentBlending);
    colorIndex += STEPS;
  }
}



void confetti() 
{
  // random colored speckles that blink in and fade smoothly
  fadeToBlackBy( leds, NUM_LEDS, 10);
  int pos = random16(NUM_LEDS);
  leds[pos] += CHSV( gHue + random8(64), 200, 255);
    FastLED.show(); 
}
```

# If you encounter trouble…

Any time you&nbsp;hit a roadblock&nbsp;with a neopixel&nbsp;project, we’ll usually ask that you start with the “strandtest” example from our own Adafruit\_NeoPixel library. This helps us narrow down whether it’s a hardware or software issue. The library is installed similarly to FastLED or any other in Arduino (`Sketch > Include Library > Manage Libraries...`)

You’ll find the strandtest example under&nbsp; **File→Sketchbook→Libraries→Adafruit\_NeoPixel→strandtest**

**If strandtest fails to run, this suggests a hardware issue** …for example, connecting to the wrong pin on the&nbsp;Pro Trinket.

If you’re new to Arduino programming and LEDs, we usually suggest starting with the Adafruit\_NeoPixel library…it’s pretty basic, the strip declaration is more conventional, and we can stay on top of keeping it compatible with our own products and the most mainstream Arduino boards.

As FastLED is a more “bleeding edge” third-party library, **we can’t always guarantee compatibility across versions or with specific boards.** You can find help through their **[community on Google+](https://plus.google.com/communities/109127054924227823508)**. This is potent stuff, written by people with a deep appreciation for LED art, and we wanted to showcase it.

# Fiber Optic Whip

## 3d Printing

![](https://cdn-learn.adafruit.com/assets/assets/000/046/586/medium800/led_pixels_whip_handle_render.jpg?1505542818)

This handle was created in Tinkercad. &nbsp;It has a port for the button and one for the switch, and it matches the exterior dimension of the fiber optic bundle while leaving the right amount of space inside for the Neopixel Jewel and the electronics.

I added a ring around the base to keep it from slipping out of my hand, and a hole in the ring to attach a wrist strap for extra safety. &nbsp; [Add your own details](https://www.tinkercad.com/things/eMqf6u3BfO7-fiber-optic-whip-handle)&nbsp;-- every Jedi's lightsaber handle should be unique.

It prints with no supports needed. &nbsp;The largest dimension is the height -- it is 119mm high, which was just under the size limit of my Up! Mini 3d printer.

I found it printed best using the "fast draft" print setting. &nbsp;The higher quality settings overloaded the printer, possibly because this model is so close to the size limit for the bed. &nbsp;Your results may vary.

[Download .stl file from Thingiverse](https://www.thingiverse.com/thing:2536957)
If you don't have access to a 3d printer, you can [order a pre-printed handle&nbsp;from Shapeways.](https://www.shapeways.com/product/ULDLHKY2W/fiber-optic-whip-handle)

![](https://cdn-learn.adafruit.com/assets/assets/000/046/709/medium800/led_pixels_fiberoptic_whips.jpg?1506035092)

# Fiber Optic Whip

## Assembly

![](https://cdn-learn.adafruit.com/assets/assets/000/046/634/medium800/led_pixels_00_materials.jpg?1505758931)

Be sure you've uploaded the code to your Pro Trinket before assembly. &nbsp;That will make it a lot easier to test at each step and be sure things are working.

# On/Off Switch
Trim one of the side legs off your switch and trim the other legs so they're a little shorter. Solder a 4" white wire to both remaining legs and cover with heat shrink. &nbsp;

![led_pixels_01_switchwired.jpg](https://cdn-learn.adafruit.com/assets/assets/000/046/635/medium640/led_pixels_01_switchwired.jpg?1505758961)

# Mode Button
Trim the side legs off one side of your switch button. &nbsp;Flatten the remaining two legs out so the switch lies flat on your table &nbsp;Solder a 7" white and black wire to&nbsp;these two legs and cover with heat shrink.

![led_pixels_02_buttonwired.jpg](https://cdn-learn.adafruit.com/assets/assets/000/046/636/medium640/led_pixels_02_buttonwired.jpg?1505759049)

# Battery Charger / LiPoly Backpack
Cut the trace between the two switch pads on the LiPoly backpack with a utility knife. &nbsp;Solder the two white wires coming from your switch into these two holes.

![led_pixels_03_cuttraces.jpg](https://cdn-learn.adafruit.com/assets/assets/000/046/638/medium640/led_pixels_03_cuttraces.jpg?1505759310)

Stack the LiPoly backpack on top of the Pro Trinket using the included headers, aligned as shown. &nbsp;Solder the headers in place on both boards and trim&nbsp;the header legs close to the boards.

![led_pixels_04_switchandbackpack.jpg](https://cdn-learn.adafruit.com/assets/assets/000/046/639/medium640/led_pixels_04_switchandbackpack.jpg?1505759342)

Plug your battery into your charger and flip the switch. &nbsp;The lights on the Pro Trinket should come on so you know it's working.

# Neopixel Jewel
Solder a 7-8" red wire to +, black wire to G and white wire to "IN" on the back of the Neopixel Jewel.

![led_pixels_05_jewelwired.jpg](https://cdn-learn.adafruit.com/assets/assets/000/046/640/medium640/led_pixels_05_jewelwired.jpg?1505759510)

Solder the white wire to pin 5 on the Pro Trinket. &nbsp;Solder the power and ground wires to the + and - pads on the back of the Pro Trinket.

![led_pixels_06_trinketwired1.jpg](https://cdn-learn.adafruit.com/assets/assets/000/046/641/medium640/led_pixels_06_trinketwired1.jpg?1505759563)

Plug your battery in again and test to be sure the&nbsp;Neopixel Jewel comes on.

# Add the Mode Button
Solder the black wire from the mode button to the G pin on the bottom end of the Pro Trinket. &nbsp;Solder the white wire to pin 3. &nbsp;

![led_pixels_07_trinketwired2.jpg](https://cdn-learn.adafruit.com/assets/assets/000/046/642/medium640/led_pixels_07_trinketwired2.jpg?1505759700)

Plug your battery in once more and click the mode button to see the Neopixel Jewel change color modes. &nbsp;Tug on all your connections and wiggle things around to make sure all your solder joints are tight.

![led_pixels_08_trinketwired3.jpg](https://cdn-learn.adafruit.com/assets/assets/000/046/644/medium640/led_pixels_08_trinketwired3.jpg?1505759759)

# Handle Assembly

Getting everything into the handle is a little tricky, but it all fits neatly with a little bit of patience and care. &nbsp;Needle-nose pliers are very helpful here.

Feed the electronics into the handle from the top. &nbsp;Place the on-off switch first. &nbsp;It helps to pull it all the way through while getting the Pro Trinket it place and then press it back so it's flush with the outside of the case. &nbsp;Glue it in place with hot glue.

![led_pixels_09_handleswitch.jpg](https://cdn-learn.adafruit.com/assets/assets/000/046/646/medium640/led_pixels_09_handleswitch.jpg?1505760569)

Once you have the switch in its hole, settle the Pro Trinket at the bottom of the case so you can access the USB port. &nbsp;Glue it in place, being careful not to get any glue inside the USB port.

![led_pixels_10_handletrinket.jpg](https://cdn-learn.adafruit.com/assets/assets/000/046/647/medium640/led_pixels_10_handletrinket.jpg?1505760668)

Slide the battery down next to the Pro Trinket, then set&nbsp;the mode button in place. &nbsp;I found it easiest to tape the button and wires against the inner wall of the handle with gaffer's tape. &nbsp;The handle has a shallow track&nbsp;inside below the switch hole where the wires feed through past the Neopixel Jewel.

![led_pixels_11_handlebutton.jpg](https://cdn-learn.adafruit.com/assets/assets/000/046/648/medium640/led_pixels_11_handlebutton.jpg?1505760776)

Lastly, settle the Neopixel Jewel in place. &nbsp;There's a tiny ledge that will hold it at just the right spot. &nbsp;It's a little tricky to get it settled -- if you're having trouble, be sure the switch wires are settled neatly into the wire channel.

![led_pixels_12_handlejewel.jpg](https://cdn-learn.adafruit.com/assets/assets/000/046/649/medium640/led_pixels_12_handlejewel.jpg?1505760863)

TEST AGAIN AT THIS POINT! &nbsp;Make sure you haven't knocked any wires loose with all that fiddling.

Wrap a few layers of gaffer's tape around the fiber bundle until it fits snugly inside the handle. &nbsp;Gently press it in as far as it will go, being careful not to dislodge the mode button.

![led_pixels_13_fiberswrap.jpg](https://cdn-learn.adafruit.com/assets/assets/000/046/650/medium640/led_pixels_13_fiberswrap.jpg?1505760939)

Add a wrist strap to the hole at the bottom of the handle. &nbsp;Swing it around to be sure the fibers won't come out!

![led_pixels_14_handlefinished.jpg](https://cdn-learn.adafruit.com/assets/assets/000/046/652/medium640/led_pixels_14_handlefinished.jpg?1505761063)

# Fiber Optic Whip

## Finishing

Hang the whip up near the ceiling so the fibers spill down. &nbsp;Take a sharp pair of scissors and trim the fibers at all different lengths so the points of light at the end of the fibers are scattered across the length of your whip. &nbsp;This will create a gorgeous swarm-of-fireflies effect.

![led_pixels_15_trim.jpg](https://cdn-learn.adafruit.com/assets/assets/000/046/653/medium640/led_pixels_15_trim.jpg?1505761765)

![](https://cdn-learn.adafruit.com/assets/assets/000/046/654/medium800/led_pixels_16_done.jpg?1505761861)

You're finished! &nbsp;Take it someplace dark and dance your heart out.


## Guide Products

### Adafruit Pro Trinket - 5V 16MHz

[Adafruit Pro Trinket - 5V 16MHz](https://www.adafruit.com/product/2000)
 **Deprecation Warning: The Pro Trinket bit-bang USB technique it uses doesn't work as well as it did in 2014, many modern computers won't work well. So while we still carry the Pro Trinket so that people can maintain some older projets, we no longer recommend it.** Please...

In Stock
[Buy Now](https://www.adafruit.com/product/2000)
[Related Guides to the Product](https://learn.adafruit.com/products/2000/guides)
### NeoPixel Jewel - 7 x 5050 RGB LED with Integrated Drivers

[NeoPixel Jewel - 7 x 5050 RGB LED with Integrated Drivers](https://www.adafruit.com/product/2226)
Be the belle of the ball with the NeoPixel Jewel! &nbsp;We fit seven of our tiny&nbsp;5050 (5mm x 5mm) smart RGB LEDs onto a beautiful, round&nbsp;PCB with mounting holes and a chainable design to create what we think is our most elegant (and evening-wear appropriate) NeoPixel board...

In Stock
[Buy Now](https://www.adafruit.com/product/2226)
[Related Guides to the Product](https://learn.adafruit.com/products/2226/guides)
### Adafruit LiIon/LiPoly Backpack Add-On for Pro Trinket/ItsyBitsy

[Adafruit LiIon/LiPoly Backpack Add-On for Pro Trinket/ItsyBitsy](https://www.adafruit.com/product/2124)
If you have an ItsyBitsy or Pro Trinket you probably know it's the perfect little size for a portable project. This LiPoly backpack makes it really easy to do! Instead of wiring 2 or 3 boards together to make a charging system, this little PCB sits on top of the PCB and allows a...

In Stock
[Buy Now](https://www.adafruit.com/product/2124)
[Related Guides to the Product](https://learn.adafruit.com/products/2124/guides)
### Metal Ball Tactile Button (6mm) x 10 pack

[Metal Ball Tactile Button (6mm) x 10 pack](https://www.adafruit.com/product/3347)
Add some steely elegance to your project with these **Metal Ball Tactile Buttons**. They've got a nice industrial shine to them along&nbsp;with a light blue underbelly. Not only do they look good, but they're also good if you have an actuator that will be pressing the...

In Stock
[Buy Now](https://www.adafruit.com/product/3347)
[Related Guides to the Product](https://learn.adafruit.com/products/3347/guides)
### Breadboard-friendly SPDT Slide Switch

[Breadboard-friendly SPDT Slide Switch](https://www.adafruit.com/product/805)
These nice switches are perfect for use with breadboard and perfboard projects. They have 0.1" spacing and snap in nicely into a solderless breadboard. They're easy to switch no matter what size fingers you have, but not so easy that they'll get flipped by accident. Work great as...

In Stock
[Buy Now](https://www.adafruit.com/product/805)
[Related Guides to the Product](https://learn.adafruit.com/products/805/guides)

## Related Guides

- [Adafruit NeoPixel Überguide](https://learn.adafruit.com/adafruit-neopixel-uberguide.md)
- [MX MIDI Guitar](https://learn.adafruit.com/mx-midi-guitar.md)
- [Lego Neon NeoPixel Sign with CircuitPython](https://learn.adafruit.com/lego-neon-sign.md)
- [Sparkle Motion Dance Shoes](https://learn.adafruit.com/sparkle-motion-dance-shoes.md)
- [ Faz-Wrench - Five Nights at Freddy's](https://learn.adafruit.com/faz-wrench.md)
- [LED Matrix Necklace Pendant](https://learn.adafruit.com/led-matrix-necklace-pendant.md)
- [A CircuitPython BLE Remote Control On/Off Switch](https://learn.adafruit.com/circuitpython-ble-remote-control-on-off.md)
- [LED Noodle Lamp](https://learn.adafruit.com/led-noodle-lamp.md)
- [LED Matrix Hourglass](https://learn.adafruit.com/led-matrix-hourglass.md)
- [PyPortal Alarm Clock](https://learn.adafruit.com/pyportal-alarm-clock.md)
- [DotStar Belly Dance Fans](https://learn.adafruit.com/dotstar-belly-dance-fans.md)
- [Boomy Pi Airplay Boombox](https://learn.adafruit.com/boomy-pi-airplay.md)
- [Circuit Playground Gizmo Ornaments](https://learn.adafruit.com/display-ornaments-with-circuit-playground.md)
- [Glowing Viking Rune wayFinder](https://learn.adafruit.com/glowing-viking-rune-artifact.md)
- [Zelda: Breath of the Wild – 3D Printed Bladesaw](https://learn.adafruit.com/bladesaw.md)
- [Lightsaber Prop-Maker RP2040](https://learn.adafruit.com/lightsaber-rp2040.md)
