Carmel – Garbage Light

For my final project I made a companion light for my online show Dumpster Fire.

Instructables link: https://www.instructables.com/Garbage-Light/

video link: https://youtu.be/8EvMQiX6GAA

Dumpster Fire?
Dumpster Fire is an online show that airs on transmissionpit.com. Each episode is made of ‘found footage’ that is less found and more directly sourced from other media artists.

Each episode airs only once, and never again.

https://carmeldeberg.myportfolio.com/dumpster-fire-online-show

Since the show online runs once, I wanted to create a very easily DIY-able light that would act as a countdown timer for when the show will start, and then be a companion light show during the episode.

Viewers can follow the instructables and send me their board info. I add all the participating boards into my Arduino cloud, and five minutes before the show starts, I trigger the code to be transmitted to the Arduinos.

My cat was very concerned with what was going on:

Working on my circuit:

My code:

// Include the NeoPixel library

#include <Adafruit_NeoPixel.h>

// Define the pin where the NeoPixel data line is connected

#define LED_PIN 6

// Define the number of LEDs on your NeoPixel strip

#define NUM_LEDS 8

// Create an instance of the NeoPixel strip

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);

// Array of colors to cycle through

uint32_t colors[] = {

strip.Color(255, 0, 0), // Red

strip.Color(0, 255, 0), // Green

strip.Color(0, 0, 255), // Blue

strip.Color(255, 255, 0), // Yellow

strip.Color(0, 255, 255), // Cyan

strip.Color(255, 0, 255), // Magenta

strip.Color(255, 255, 255) // White

};

int numColors = sizeof(colors) / sizeof(colors[0]);

void setup() {

strip.begin();

strip.show(); // Initialize all pixels to ‘off’

}

void loop() {

for (int i = 0; i < numColors; i++) {

pulseColor(colors[i], 1000); // Pulse the current color over 1 second

}

}

// Function to create a pulsing effect

void pulseColor(uint32_t color, int duration) {

int steps = 256; // Number of brightness steps

int stepDelay = duration / (steps * 2); // Time per step

// Fade in

for (int brightness = 0; brightness < steps; brightness++) {

setStripColor(color, brightness);

delay(stepDelay);

}

// Fade out

for (int brightness = steps – 1; brightness >= 0; brightness–) {

setStripColor(color, brightness);

delay(stepDelay);

}

}

// Function to set all LEDs on the strip to a specific color and brightness

void setStripColor(uint32_t color, int brightness) {

for (int i = 0; i < strip.numPixels(); i++) {

strip.setPixelColor(i, dimColor(color, brightness));

}

strip.show();

}

// Function to adjust the brightness of a color

uint32_t dimColor(uint32_t color, int brightness) {

uint8_t r = (uint8_t)((color >> 16) & 0xFF);

uint8_t g = (uint8_t)((color >> 8) & 0xFF);

uint8_t b = (uint8_t)( color & 0xFF);

r = (r * brightness) / 255;

g = (g * brightness) / 255;

b = (b * brightness) / 255;

return strip.Color(r, g, b);

}

Reflections/next steps:

Instead of having the aluminum foil be the shell, the shell should be cardboard that is lined with aluminum foil. 

I would like to try with a different web-enabled board and led strip. The led strip needs to be one that has a casing as trying to adjust the sculpture Is too much for the delicate solder/wires on the pixel strip. 

I also recently taught my students an additive color theory class. As I was writing up these reflections, it has occurred to me that there is an opportunity to design the instructions for the light in a more detailed way that could also passively teach viewers some color theory as well.

https://youtu.be/2V_RTZIHois

Discover more from Making Studio

Subscribe now to keep reading and get access to the full archive.

Continue reading