Lights and a City-scape Painting

Introduction: Lights and a City-scape Painting

So this project incorporates art and technology. This Instructable shows how to sew LEDs and neopixels into canvas and paint a city-scape that ties in to the use of lights.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Full Instructions

First thing is first, materials: You will need a Gemma, a

Lillypad, seven Neopixels, and twenty-one LEDs (I chose a variety of white, yellow, orange, and red to imitate city lights), a needle, conductive thread, two battery packs, a USB cord, acrylic paint (red, blue, yellow, black and white), a blank canvas and paintbrushes.

Once you have your materials, you will want to do is pick a picture of a city nightlife. (I chose a long-exposure photograph of Chicago in the evening). Once you have your picture, you want to draw a basic outline of it on the front of the canvas. You want to have the outline so that you can place the lights where you want them to be. After that, you want to lay out a diagram of your circuits. Once you have your diagram figured out, you want to transfer that diagram onto the back side of the canvas so that it lines up with where you want the lights to be on the front side.

After that, it is a lot of sewing… For the neopixels, when you sew them make sure that the arrows on the neopixels point away from the Gemma, since that is the direction the current is supposed to flow. And you need to cut holes into the canvas and poke the front of the neopixels through, and when you sew the Gemma in place, make sure that it upside down (otherwise your positive and negative lines will be backwards). With the LED’s make sure that only one color of LED’s is attached to one pin on the Lillypad and no more than three LED’s to a pin. And to put the LEDs into place you can poke the legs through the front of the back and fold them on the back, A line of thread needs to go from the negative on the Lillypad all the way around and attach to the negative side of all the LED’s. (The negative side of the LEDs has a flat edge on the light and a shorter leg on it- you can always check the positive and negative using a battery if you feel you are unsure).

After the sewing, use the USB cord to program each one. You will need to have the Arduino program available on whatever computer you are using. The coding for both the neopixels and the LEDs is attached to this post.

Once you have all of your sewing and coding done it is time to paint! And once you have painted to your satisfaction, voila, you have a painting that lights up all sorts of cool!

Step 2:

These are pictures of the type of canvas that you would need to start the project.

Step 3:

This picture shows what a sketch of the city on the front of the canvas might look like.

Step 4:

This is an image of the schematic for the LEDs and neopixels that will be sewn into the back of the canvas.

Step 5:

This shows the diagram of the lights drawn on to the back of the canvas, with the LED legs poked through. (Note: The Gemma should be on the other side of the line of neopixels.)

Step 6:

These pictures show what it should look like after you have finished sewing and attach the battery packs ffor when you start to program the lights how you want them.

Step 7:

Hopefully after you have finished coding and painting, this is what it will look like.

Step 8: Code for the Neopixels and LEDs

Neopixel code


#define PIN 1

Adafruit_NeoPixel strip = Adafruit_NeoPixel(7, PIN, NEO_GRB + NEO_KHZ800);

void setup() {



void loop() {

colorWipe(strip.Color(255,255,0), 50); // Yellow

colorWipe(strip.Color(255, 0, 0), 50); // Red

colorWipe(strip.Color(255,165,0), 50); // Orange

colorWipe(strip.Color(0, 0, 255), 50); // Blue

colorWipe(strip.Color(255,255,255), 50); //White


void colorWipe(uint32_t c, uint8_t wait) {

for(uint16_t i=0; i

strip.setPixelColor(i, c);;




LED coding

int OrangeOne = 9;

int OrangeTwo = A2;

int OrangeThree = A5;

int YellowOne = 6;

int YellowTwo = A3;

int RedOne = 5;

int RedTwo = 11;

int WhiteOne = 10;

int WhiteTwo = A4;

int ledPins[] = {OrangeOne,OrangeTwo,OrangeThree,YellowOne,YellowTwo,WhiteOne,WhiteTwo,RedOne,RedTwo}; // LED pins

int ledCnt = 9;

void setup (){

pinMode(RedOne, OUTPUT);

pinMode(RedTwo, OUTPUT);

pinMode(OrangeOne, OUTPUT);

pinMode(OrangeTwo, OUTPUT);

pinMode(OrangeThree, OUTPUT);

pinMode(YellowOne, OUTPUT);

pinMode(YellowTwo, OUTPUT);

pinMode(WhiteOne, OUTPUT);

pinMode(WhiteTwo, OUTPUT);

// Serial.begin(9600);


void loop(){

int rand1 = random(0,ledCnt);

int rand2 = random(0,ledCnt);

int rand3 = random(0,ledCnt);


digitalWrite(RedTwo, LOW);

digitalWrite(OrangeOne, LOW);

digitalWrite(OrangeTwo, LOW);

digitalWrite(OrangeThree, LOW);

digitalWrite(YellowOne, LOW);

digitalWrite(YellowTwo, LOW);

digitalWrite(WhiteOne, LOW);

digitalWrite(WhiteTwo, LOW);





Step 9:

This video is hopefully similar to what your picture looks like once you have completed all the steps.

Be the First to Share


    • Backyard Contest

      Backyard Contest
    • Silly Hats Speed Challenge

      Silly Hats Speed Challenge
    • Arduino Contest 2020

      Arduino Contest 2020



    Wow. This is cool. I really like your painting style. The lights really add to the coolness of the effect.