Light-Up Angler Fish Embroidery

This is a very simple FLORA project with no soldering– a single NeoPixel lights up on an embroidered angler fish on a pair of shorts. The main board is stitched on the front of the design, in the belly of the fish. A snap is used on the fin as a digital switch, triggering a color change in the pixel in the angler’s lure. Follow the circuit diagram to stitch up this circuit, and tuck the battery in the pocket.

Project created with assistance from Risa Rose, portraits by Collin Cunningham

Tools & Supplies

Bill of materials:

Layout & Circuit Diagram

D6 is the data bus for the NeoPixel; VBATT and GND also connect to + and – on the pixel. A snap is used as a switch– one half is connected to GND and stitched to the body of the fish, and the other to TX (aka D1, any digital pin will work), and sewn to the back of the fin so you can snap and unsnap it at will. You can print out the fish pattern on transfer paper or just use it as a reference.

You can adapt this project for Gemma by changing the button pin to be Digital #0 or #2 and the NeoPixels on Digital #1 – the code will also need adjustments for the new pin connections

Sew Circuit

Sandwich the pant leg between the two pieces of an embroidery hoop. If your solid piece has a “grip lip,” make sure it is facing up.

Begin tightening the knob on the outer ring and also pulling the fabric taut in the hoop.

Place your FLORA main board and single pixel on the taut fabric, and sketch out your pattern (or trace ours) with tailor’s chalk.

Thread a needle with 2-ply conductive thread and pierce the fabric from back to front next to the pad marked D6 on FLORA.

Leave a 5″ tail at the back of the fabric and make a few stitches through the D6 hole, securing it to the pant leg.

End at the back and tie a knot with the working thread and the tail you left at the start. Seal the knot with clear nail polish or fray check.

Learn more tips over at my Conductive Thread guide!

Use a running stitch to sew a path with the working thread up the angler’s lure to the end. Make a few stitches around the pixel’s pad marked with an inward-facing arrow to secure it both electrically and mechanically. make a knot at the back, seal, and snip off the tail.

Repeat to make a connection from VBATT on FLORA to + on the pixel, and likewise from GND to -. You will now have three independent paths sewn from the main board to the pixel.

To make the fin, sew one half of a snap to a small piece of fabric with conductive thread.

Knot and seal at the back, then cover the snap by folding the fabric in half.

Stitch two lines as shown in plain thread, creating the shape of a fin. Cut off excess fabric about 1/4″ from the seam and turn the fin right side out.

You should have a long piece of conductive thread coming from the inside of the fin.

Stitch the other half of the snap to the body of the fish (on your shorts) with conductive thread and use a running stitch to connect it to a pad marked GND on FLORA.

Line up the snap on the fin and snap together, then stitch the fin to the body with plain thread.

Pick up the conductive thread tail coming out of the fin and use it to stitch a path to TX (aka D1, or any digital pin) on FLORA.

These two parts will serve as a switch, detectable when you snap and unsnap the fin.

Double-check your circuit for stray threads and get ready to load it with a program that will change the lure’s color when you snap the fish’s fin.


Plug in a USB cable to connect the FLORA main board to your computer. Open up the Adafruit Arduino IDE, which you can download from the Getting Started with FLORA guide.

First test out your pixel’s connections by uploading the sketch in File >> Examples >> Adafruit_NeoPixel >> strandtest.

Then upload the code below to make the pixel change color when the snap is connected/disconnected:

#include <Adafruit_NeoPixel.h>

// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_RGB     Pixels are wired for RGB bitstream
//   NEO_GRB     Pixels are wired for GRB bitstream
//   NEO_KHZ400  400 KHz bitstream (e.g. FLORA pixels)
//   NEO_KHZ800  800 KHz bitstream (e.g. High Density LED strip)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(1, 6, NEO_GRB + NEO_KHZ800);
const int buttonPin = 1;     // the fin snap is connected to FLORA TX, the other half of the snap is conntected to GND
int buttonState = 0;         // variable for reading the snap status

void setup() {
  strip.begin();; // Initialize all pixels to 'off'
    // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
  digitalWrite(buttonPin, HIGH);

void loop() {
    // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);
    // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == LOW) {     
    // turn LED on:    
    strip.setPixelColor(0, strip.Color(200, 211, 254)); // color when snap is connected;  
  else {
    // change LED color
    strip.setPixelColor(0, strip.Color(250, 0, 0)); // color when snap is disconnected; 

You can adapt this project for Gemma by changing the button pin to be Digital #0 or #2 and the NeoPixels on Digital #1 – the code will also need adjustments for the new pin connections.

Hand Embroidery

Whether you follow our pattern or draw up your own, learn all types of great embroidery stitches at Needle’nThread‘s website. Sublime Stitching also has great tutorials and embroidery kits. Embroidery is is to cross stitch as vector graphics are to raster: you can create various lines and fills to create color effects and texture.


Cut a small hole in your shorts next to the JST battery port.

Bring the male end of the JST extension cable through the hole from the back of the fabric to the front, then plug it into FLORA.

Route the extension cable up to the pocket, in which you should also cut a small hole.

You can now plug the battery pack in through the pocket of the shorts!

Tack down the extension cable on the back of the embroidery, using stitches or just a very few fibers on the fabric to anchor it with plain thread. Stitch along the entire cable, and you can optionally use this same thread to secure the holes you cut at either end with a few whip stitches.

We recommend powering this project with our 3xAAA holder.

Remove the battery for washing and turn the shorts inside out before washing by hand. Allow to dry thoroughly before plugging the battery back in.

For a smaller battery option, try our tiny lipo battery and micro lipo USB charger. Be sure to heed all safety warnings about lithium polymer batteries and do not use them unless you are comfortable with power supplies.

Remove the battery for washing and turn the shorts inside out before washing by hand. Allow to dry thoroughly before plugging the battery back in.

Wear it!

This basic project can take you far– try changing up the code to animate the pixel or add more snap switches! We hope this introductory project will inspire your own wearable electronics project.

Originally posted on Adafruit

%d bloggers like this: