Introduction: RGB Conductive Mosaic

For my Computational Craft midterm, I wanted to take a swatch that I made earlier in the semester and expand upon it. I am a musician (trumpet player/composer) and I have always been fascinated by/passionate about making mosaics.

The materiality of the CDs is important to me because I feel like they are just a business card for musicians now. Most people buy music on iTunes or listen to it on Spotify or Pandora making the landscape for a performing artist's revenue and distribution radically different than it was even 10 years ago.

Step 1: Materials

2 Neopixel RGB LEDs (or other addressable LEDs

Lilytiny with USB port

Black (or any other color), non-conductive fabric


Conductive thread

Clear nail polish

CDs (or other non-conductive material to make your mosaic out of)

Hot glue gun (and hot glue refills)


adafruit neopixel library

Digispark Library (

Step 2: Build Your Simple Circuit (make Sure to Test With Alligator Clips Before You Sew!)

LilyTiny Vin-LED power

Ground-LED Ground

LilyTiny Pin 3- LED Data In

I highly recommend reading through the Adafruit Sewable Neopixels guide before you attempt to sew your circuit.

Add the Copper switch to act as a soft-button on the power line

Step 3: Time to Make Your Mosaic!!!

Use materials that you think are beautiful to construct your mosaic!

I used CDs because I think that they are very beautiful when they are cut and reflect the light in a very interesting way.

Make sure not to disrupt your circuit or place conductive material near your circuit.

Step 4: Code Time

Upload this code onto your Lilypad Tiny and watch it light up!


#define PIN 3 #define gnd 0

// 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) Adafruit_NeoPixel strip = Adafruit_NeoPixel(2, 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() {

pinMode(gnd, OUTPUT); digitalWrite (gnd, LOW); // use this pin as a ground strip.begin();; // Initialize all pixels to 'off' }

void loop() {

colorWipe(strip.Color(255, 255, 255), 20); // Red colorWipe(strip.Color(255, 0, 0), 20); // Green colorWipe(strip.Color(0, 0, 255), 1); // 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