December 20: Final Project

Final Project Documentation


When I was brainstorming ideas for our space theme, I thought about aurora borealis (also known as northern lights) which is a natural light display in the sky found in Arctic and Antarctic regions. It has always been a dream of mine to see one. I was inspired by this acryl + neopixels crown project that James showed on his neopixels workshop, and it made me think about how light from the colourful LEDs could disperse through transparent acrylic parts that would copy the wavy shape of aurora.

My project is an art installation imitating a beautiful nature phenomenon that also engages people to interact with it by controlling certain values to play around with the overall look of the installation. 

(Note: since I couldn’t attend the IM show, videos included in the post were filmed while still working on the project and do not show its final look)


It was a true joy to work on it and combine what I’ve learned in this class to design and create something that would not only look good, but also involves user interaction.

The final design looks quite simple and minimalistic. Its affordances are clear, as the control box has only two knobs on top that encourage people to twist them and then see what happens.


  1. Creating the colour patterns;
  2. Gluing parts and calculating correct measurements (even including the weight);
  3. Attaching potentiometers with a box

Materials & Construction: Physical, Electronic and Mechanical Components.

The physical installation consists of the “Aurora” and box with with potentiometers hiding the Arduino. Components:

  • 1 Adafruit neopixel strip (20 pixels);
  • 1 transparent acrylic sheet (cut in 20 pieces);
  • acrylic base;
  • 1 Arduino;
  • acrylic box;
  • external power supply;
  • 2 potentiometers (10k ohm) and knobs.

PART 1: Aurora Borealis

I have used the laser cutter to make 20 thin rectangles of different length (varying from 14 cm to 31 cm long). I chose transparent acrylic (3-6 mm thick)  to create the light dispersion effect that I was initially aiming for. I was happy with the range of length they had. The difference made the colour sequence look more dynamic, and I don’t think I had to make the rectangles even longer. First, taller parts are trickier to attach to the base. Second, since the entire look of my project depends on the overall lightning in the display room, taller acrylic pieces do not light up as much when the room is bright.However, in 006, it was pretty dark, so the pieces fully lit up and I was satisfied with the way my project looked.

My Aurora is standing on white acrylic base that has a “pit” line in the middle to create space for the neopixel string, which has 20 pixels, between the base and the rectangles attached above with super glue. This construction gave some mobility for the string to be taken out whenever I want, while I was playing around with code and would carry the string around with me. I took off paper. Eventually,  on the back of the neopixel string to stick it to the base to avoid it being misplaced by someone during the show.

Knowing what I know now, I would probably do the construction in a slightly different way. I saw Tayla using matte acrylic, which I think would also look cool with my project and maybe it would have recreated the northern lights effect even better. Also, I would make my acrylic pieces wider to be glued easier to the base (yet it could change the light dispersion effect just like the length does). Alternatively, I should have cut out rectangular “holes” for the strip on the rectangles themselves.

I was actually going to make the installation bigger by attaching another similar block with 10 more rectangles to have 30 rectangles and neopixels in total, but I gave up on the idea once Michael suggested to simplify our project in order to save time.

PART 2: Control Box

I have used this website to create the template for my box that would hide the Arduino, breadboard etc. and would have two potentiometer on top to control brightness and speed of my colour sequence. The box also has two holes on the sides for the USB cord and wires that connect the neopixels strip.

To be honest, I made wrong measurements for my first box, because I did not take the thickness of acrylic into account. The second box had holes too small to attach potentiometers without them moving along with the knobs. Michael suggested I should add an extra rectangular hole for a tiny “stabiliser” that those potentiometer have that prevent them from moving around. I’ve also made the round holes one 1 mm bigger. (Lesson learnt: size matters! Even 1 mm can make a huge difference.) In the end, I did not have to re-cut the entire box, only the top part.

Also, I wish we had more white acrylic left, because I had to make my box black, which was an out-of-place colour contrast with the base of Aurora. In general, I am pleased with the way it looks – a nice way to hide messy wires and so on.

What is more, my strip is using an external 5v power supply, so it’s not using a laptop, but is directly connected to the power socket.





My code has undergone hundreds of changes as I was playing around with the colour sequence. I started out with Adafruit Neopixel Library’s simple codes to understand how the strip works and tried to customise those code for the effect that I was going for. I wanted my aurora to gradually change colors, fading and fading out. Also, the challenge was to use a small colour range of mostly green and some blue, yellow etc., because aurora borealis’ colour actually depends on many factors such as latitude and altitude, but it is mostly green in general. For this reason, sample codes were not that helpful as they are too fast-bright-disco-rainbow. 

Later, May showed me this cool website  that let’s you draw the pattern you want and it generates the code for you. It was fun to play around with, but I felt like it’s wrong to not write my own code, because I wanted to use what I’ve learnt in this class. However, it took me a long time to figure out what I need to do with the code for it to look  like what I imagined it to be, until James gave me the best advice ever: start over and write the code yourself from scratch. And it worked!

The code is basically a bunch of for-loops that change colour values for certain pixels. While I was creating it, I tried to sketch out the sequence, because it’s difficult to visualize colours from numbers on the screen.
What I’d like to learn: is there a way to make the code not as long and repetitive. 



Leave a Reply

Your email address will not be published. Required fields are marked *