Neopixel LED Skirt

DIY Skirt with 120 Neopixel LEDs and motion detection

Public Chat
Similar projects worth following
My first wearable project integrating 120 WS2812B RGB LEDs to a DIY skirt.
Of course, I was only responsible for the LED and coding stuff, sewing and pattern construction was done by a pro (who luckily is my girlfriend).
This project war inspired by and

Bouncing ball example triggered by motion:

Video showing the fist implemented light effects:

  • bouncing balls (motion triggered)
  • meteor rain
  • fire


Meteor rain example from the video

ino - 2.66 kB - 02/03/2021 at 17:50


  • 1 × Adafruit QT PY
  • 120 × WS2812B Neopixel LED (60 LED/m stripe) Electronic Components / Misc. Electronic Components
  • 1 × Adafruit LSM6DSO32 board
  • 1 × STEMMA cable
  • 1 × 5000 mAh USB power bank

  • Circuit diagram

    makeTVee02/20/2021 at 08:22 0 comments

    Simple circuit diagram for connecting the strip and sensor:

  • Coding

    makeTVee02/03/2021 at 17:49 0 comments

    1. Meteor rain

    Simple example using the following lib: which I have found on 

    To install the library, you have to download the AGNeoPatterns folder from the repository above, put it into a zip-file and include this in the Arduino IDE as a library.

    It allows me to define virtual strip segments in a long LED strip, so I can control the 6 strips separately even if they are connected to a single pin of the controller.

    2. Bouncing Ball

    added to my Github: as a PlatformIO project.

    special version with rainbow color change balls, looks even better ;-)

    If you are using RGBW strips instead of RGB strips, you have to change the init parameters for the Neopixels:

    RGB: npNeoPixel pixels = npNeoPixel(20, NeoPin, NEO_GRB + NEO_KHZ800, 1.0);

    RGBW: npNeoPixel pixels = npNeoPixel(20, NeoPin, NEO_GRBW + NEO_KHZ800, 1.0);

  • LED integration and skirt design

    makeTVee02/02/2021 at 17:53 0 comments

    6 LED stripes with 20 LEDs each are installed only at the front of the skirt. There are no LEDs at the back because of practical reasons (sitting, rest room etc.). 

    The stripes are connected in a serpentine layout, so only one pin on the QT PY is used. Therefore, there are three connections at the bottom of the skirt, which are secured on the stripe with some hot glue (not the final solution). 

    The skirt itself has 3 layers: 

    • blue semi transparent top layer for diffusion
    • white middle layer (cotton) holding the LEDs  and guiding the cable, also used at the waistband
    • white bottom layer (lining fabric) to reduce resistance esp. during walking.

    The stripes are attached to the skirt with Velcro, one side glued to the stripe, the other one sewed to the fabric. Every stripe has 4 Velcro points.

    Power is distributed at the top of the stripes and hidden in the white double layer at the top.

    Shrinking tubes are already installed, but not shrinked yet.

    The cable is guided to a pocket at the back of the skirt. There is a buttonhole to reach the pocket from inside.

    As mentioned, there are no LEDs at the back for better daily use. Of course, for special reasons (e.g. dancing), this skirt can be easily updated to a full LED set by adding stripes on the back via Velcro. 

    The pocket at the top of the back is large enough to hold the USB power bank and the controller, but still small enough to hide it under a shirt.

    All 6 stripes are accessed by this single cable ending in the pocket.

    If everything is install, the pocket looks like this

    Apart from this, the skirt is a normal skirt with full functionality ;-) So it is also a nice skirt without LEDs. But why should someone do this....

    So better switch the lights on: 


  • Build process

    makeTVee02/02/2021 at 17:52 0 comments

    Some pictures from the build process:

    Pattern cut out:

    Velcro points on fabric:

    Fastener on waist band:

    LED arrangement (serpentine layout):

View all 4 project logs

Enjoy this project?



penultimatesamurai wrote 10/17/2022 at 16:16 point

This looks great and I'm in the process of trying to get this made for my wife.  I can get the Fire and the Meteor modes working but the Bouncing Ball mode doesn't seem to work.  It doesn't get beyond "begin_I2C()": -

// setup LSM6DS032 sensor
if (!dso32.begin_I2C()) {
while (1) {

So it would seem it isn't detecting or working with the LSM6DSO32 board.  I'm connecting to it using the ESP32-S2 QT Py using the STEMMA cable connecting them directly to each other.  The LSM6DSO32 board lights up but attempting other code examples to try and connect doesn't seem to work although with those they mostly want to operate by pins on one board to the QWIIC connector on the other.

Any help or suggestions on this would be greatly appreciated.

  Are you sure? yes | no

makeTVee wrote 10/17/2022 at 16:54 point

Seems like the standard bus speed of the ESP32 is 100kHz, but the sensor uses 400kHz, so you can try to set the sped to 400kHz.

Also, there seems to be a small bug in the I2C, but it looks like it only affect the 100kHz settings:

For further discussion you can just send me a message via hackaday to discuss other solutions.

  Are you sure? yes | no

makeTVee wrote 10/17/2022 at 18:04 point

Please also check this:

  Are you sure? yes | no

medpixman wrote 02/23/2022 at 11:11 point

This is really, really, really Cool!! I see your bouncing balls pattern is platformio. Did you ever program that pattern for the Arduino IDE? I'm having trouble converting for Arduino. ThX

  Are you sure? yes | no

makeTVee wrote 02/23/2022 at 11:42 point

I would assume you have just used the code from the main.cpp? Did you included the libraries correctly? Please share the error you are getting. Best would be to send it via direct message, there you can also share the code if necessary.

  Are you sure? yes | no

medpixman wrote 02/23/2022 at 11:50 point

Thanks so much for the amazing rapid reply. So all I need is the main.cpp and the libraries? I'll work on getting the libraries corrected and let you know. I appreciate your help - bouncing balls in multiple columns is so amazing! ThX

  Are you sure? yes | no

medpixman wrote 02/25/2022 at 10:35 point

I've got this working now! I renamed main.cpp to main.ino and properly installed the libraries from I'm looking for how to change the speed of bouncing. I can't find a variable in the main.cpp that controls the speed. The syntax from library seems more complex than the constructor in the main loop.

  Are you sure? yes | no

Ariane wrote 11/12/2021 at 18:37 point

I am currently working on making this skirt and can not get the bouncing ball code to work. I have tried it on the QT Py, Arduino Uno and Nano. Is there something that I am missing? The fire and meteor code work perfectly. 

  Are you sure? yes | no

makeTVee wrote 02/23/2022 at 11:38 point

Didn't see you post, sorry. Please send me a message if you have still issues.

  Are you sure? yes | no

Steve wrote 11/02/2021 at 03:07 point

Disregard the comment below, I got the library installed by clicking "add .zip library" and just clicking on the AGNeoPatterns folder (not a .zip).  I have 11 strands at 25 LEDs per strand.  I verified the wiring and tested it in a few configurations, 6 strands at 20 each, etc.  It verified fine and uploaded but is just not working correctly.  The strand tests work fine.  Here's a link to a video of what my fire looks like. 

Any ideas would be much appreciated!

  Are you sure? yes | no

makeTVee wrote 11/08/2021 at 19:44 point

I have answered you in the chat, can't access the video because it's private.  

  Are you sure? yes | no

Steve wrote 11/01/2021 at 04:13 point

Hi, thanks for the Instructable and inspiration!  I've been wanting to make an LED skirt for a while.  

So I completed the Skirt and LED set up per your instructions. For many different reasons,  I finally got it done just in time for my daughter's Halloween costume this Halloween afternoon.  All test sketches work just fine, but I can't get any of your fire or meteor sketches to load because I'm having trouble with the libraries.  My daughter went out with an Example sketch "Pacifica" but disappointingly not with the fire we were planning on.

I can't get the AGNeoPatterns  library to load on my Mac.  It's not a .zip so can't use the manager, but when I manually drag it to the libraries folder, Arduino IDE doesn't see the library either.  I tried to make it a .zip and use the manager, no luck that way either.  The error I'm getting is "the folder/zip does not contain a valid library."  

I'm at a dead-end searching online for a fix, I'd appreciate any help or point me in the right direction!

Thanks in advance!

  Are you sure? yes | no

greg.a.benedict wrote 09/06/2021 at 09:35 point


I'm new here and plan to give this project a go. I've done plenty of software before but very little electronics and no arduino...

I have a question if I may?

As all the strips are connected in parallel to the data pad on the board, how are the bouncing effects asymmetric?

I would expect them all to behave identically.


  Are you sure? yes | no

makeTVee wrote 09/06/2021 at 10:44 point


The stripes are connected in serial (zig-zag oriented), you will find more details on the instructables page:

  Are you sure? yes | no

greg.a.benedict wrote 09/06/2021 at 10:56 point

ahh yes of course, that makes sense. Thanks, My components should arrive tomorrow. Really looking forward to this!

I've gone with a QT PY rp2040

  Are you sure? yes | no

greg.a.benedict wrote 09/09/2021 at 20:50 point

Sorry to bother you, (I'm just so enthusiastic about this project) I've got to the point of attempting some code. As this is my first attempt at microcontroller programming there are a few things I'm unsure about.

Firstly, I got a QT PY RP2040, as I mentioned before, and the docs for that mention using Mu as an editor, but I have had some simple success with simply using VsCode and python.

However, as PlatformIO in VSCode doesn't seem to list the QTPY RP240 I'm not sure what method might be best to move forward with the bouncing ball project?

Any suggestions welcome :)

  Are you sure? yes | no

makeTVee wrote 09/11/2021 at 13:56 point

Hi, did not tested the RP2040 yet, as far as I know it is already supported by the Arduino IDE, but never used it with the Neopixel libs. You can use the code form the main.c in the bouncing ball example and copy it to an .ino file in Arduino IDE. I would start from there.

  Are you sure? yes | no

greg.a.benedict wrote 10/08/2021 at 11:15 point

Sorry for being slow, my notifications are not right yet.

Thanks for replying, I switched to the other type of QT PY and have had great success. It looks amazing, thanks so much for posting this.

I have one last question, I was wondering why the Vcc and Gnd are chained across the top rather than serpentine along with the data.

The length (2m @ 60 per m) should be fine with no appreciable voltage drop. Or is it for extensibility without changing design?


  Are you sure? yes | no

makeTVee wrote 10/11/2021 at 16:34 point

Main reason was to minimize the number of wires at the bottom to make the skirt more flexible and more natural. 

  Are you sure? yes | no

Chris Weed wrote 05/19/2021 at 22:56 point

Thank you for the inspiration.  I've always been "eh LEDs in clothes, that looks strange" but this is very well done.  I just purchased the parts and am going to get started ASAP.  This will also be my first "real" project that I'll be listening to the instructions :)  Good work!

  Are you sure? yes | no

hedenstedmads wrote 05/05/2021 at 07:24 point

I made it!

The first project I have finished. Sort off, my bouncing balls are syncretic, and I can't figure out why!?

But it's was a cool project to make, thank you for sharing it.

  Are you sure? yes | no

makeTVee wrote 05/05/2021 at 17:38 point

Great stuff! If you want to have fixed colors for the balls, just uncomment line 82.

  Are you sure? yes | no

hedenstedmads wrote 05/06/2021 at 16:00 point

On the clip you have posted it looks like the LED strip's bouncing more random. I basically have a line of LEDs moving up and down my wife.

  Are you sure? yes | no

makeTVee wrote 05/07/2021 at 10:47 point

okay, that is unexpected, can you send me your code via direct message here at hackaday? I will test it on my setup.

  Are you sure? yes | no

ba.vaughan wrote 03/18/2021 at 17:20 point

Ported the software to an Arduino pro mini. Substituted a mercury tilt switch for the accelerometer. Very simple. Works great. Got to learn PlatformIO and blinky lights. Thank you for the project.

  Are you sure? yes | no

SimonAllen wrote 03/01/2021 at 21:16 point

I am still having problems.  The error I get is 

Meteor_rain:11:10: fatal error: npMeteor.h: No such file or directory
   11 | #include <npMeteor.h>
      |          ^~~~~~~~~~~~
compilation terminated.

exit status 1
npMeteor.h: No such file or directory

I have downloaded  I have pointed Arduino IDE at it and asked it to install the library. I have tried this a few times but I still get the error.  If I look in Sketch/Include Library I see at the bottom Recommended Libraries - Adafruit NeoPixel.  The file npMeteor.h is in the zip file.  I checked that.

However, it is clearly not seeing it. Any ideas.  My version on Arduino is 1.8.12 which is the penultimate one.  I am puzzled as to what is awry.  Any ideas?

  Are you sure? yes | no

makeTVee wrote 03/02/2021 at 05:01 point

Hi Simon,

then please try to copy the AGNeoPatterns folder from the zip into the folder with your .ino file. 

  Are you sure? yes | no

SimonAllen wrote 03/03/2021 at 08:53 point

I have tried that and got the same error.  It does not see the npMeteor.h file, even though it is plainly there.  I then moved over to a Mac where I have Arduino IDE running but I get the same error there.  I have downloaded Visual Code Studio with the Arduino add on but as I feared it is a new program to me and I am lost at the moment.  I have already built the circuit and it is ready to attach to the QT PI but I am stuck.  I do feel rather dumb.  I know what the purpose of npMeteor.h is and it clearly must be used elsewhere.  It is in both examples of the code you have posted.  Other people must use it too.   I have googled this error but I am still stuck.  What else can I try? 

  Are you sure? yes | no

makeTVee wrote 03/03/2021 at 10:27 point

I have sent you a message

  Are you sure? yes | no

makeTVee wrote 03/03/2021 at 20:06 point

just to add it here, issue is fixed now by importing the to the Arduino IDE as a lib. Already updated the project log.

  Are you sure? yes | no

Ken Yap wrote 03/03/2021 at 10:49 point

IIRC #include <> searches in standard directories but not the current directory. Try changing the <> to "", thus #include "npMeteor.h"

  Are you sure? yes | no

SimonAllen wrote 02/28/2021 at 22:13 point

A couple of questions.  I cannot find the file npMeteor.h.  Any idea where I can find that?  Also, does it need a resistor inserted on A3. 

  Are you sure? yes | no

makeTVee wrote 03/01/2021 at 05:44 point

Hi Simon, 

npMeteor.h is part of the mentioned external library 

Please download the library as a zip file and install it in Arduino IDE (add .zip lib):

Resistor on A3 is recommended (470 Ohm), but it works also without. 

  Are you sure? yes | no

SimonAllen wrote 02/21/2021 at 08:54 point

What IDE would recommend for uploading the code.  I am new to this but have some Arduino experience.

  Are you sure? yes | no

makeTVee wrote 02/21/2021 at 16:42 point

With Arduino experience, I would recommend Arduino IDE. If you like a more modern approach, use Visual Studio Code with PlatformIO. That's my preferred setup.

  Are you sure? yes | no

SimonAllen wrote 02/19/2021 at 21:43 point

Is there a circuit diagram?

  Are you sure? yes | no

makeTVee wrote 02/20/2021 at 08:23 point

just added it to the project log

  Are you sure? yes | no

SimonAllen wrote 02/20/2021 at 10:05 point

Good gracious.  It is as straight forward as that.  I was thinking that it had other components.  Am I right that it is possible to individually address each string?  I noticed that in the bouncing video some decay slower than others.

  Are you sure? yes | no

Tom_Neverwinter wrote 02/18/2021 at 08:15 point

Its a cool project. Until you look at the price to make it due to using proprietary boards. an esp32 and a 6dof sensor with cheap ws2812b/11 strips would be cheaper and more effective. 

  Are you sure? yes | no

makeTVee wrote 02/18/2021 at 11:48 point

Thanks, but I don't get your point. As you can see on the pictures, I am using cheap WS2812B IP30 strips from China, QT Py is 6 $ and as proprietary as esp32 boards. Why using an ESP32 if Bluetooth and Wifi are not used? There are cheaper Arduino boards out there. And Adafruit documentation is brilliant, so using an Adafruit board is always my prefered way to finish projects fast. But of course, it is always possible to save some money in the next iteration after finishing the prototype...

  Are you sure? yes | no

Danica Roberts wrote 02/18/2021 at 04:40 point

OMG I LOVE THIS!!! Putting on my list of things to try :)

  Are you sure? yes | no

sandor wrote 02/17/2021 at 21:36 point

This looks fantastic. My daughter has a tenuous relationship with gravity so she'll love something that bounces when she does.

  Are you sure? yes | no

Ted wrote 02/17/2021 at 21:36 point

I like this idea of virtual kinetics.

I've integrated IMUs in some of my LED wearables, but I haven't figured out a good application for them yet. I've implemented a halter-top that sparkles if you jump (somewhat unreliably), but this is much cooler.

  Are you sure? yes | no

SimonAllen wrote 02/17/2021 at 19:57 point

Is there a pattern for the fabric?

  Are you sure? yes | no

makeTVee wrote 02/18/2021 at 11:51 point

Unfourtunatly not, it is a custom pattern designed for a perfect fit to the designers body. But if you start with a thick waistband, you can use a panel skirt design with 6 panels to get a similar result. If you need more information, send me a direct message and I will try to help with more details.

  Are you sure? yes | no

Chris wrote 02/17/2021 at 17:30 point

Reminds me of my wedding suit from a couple of years back! But you've made it more interesting with the bouncing balls!! Though mine was WiFi controllable so guests could change the pattern while the speed adjusted to the music.

  Are you sure? yes | no

benkokes wrote 02/17/2021 at 17:20 point

What a great, clever concept! And well executed!  I love it, great job!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates