I designed and built a modular holographic art piece using a laser-engraved piece of acrylic, RGB LED strip, and custom 3D-printed base.
This was a project done during my high school digital electronics class.
The internals consist of an Adafruit Trinket and a RGB LED strip, which is connected to the Trinket using a single inline resistor on the data pin.
They’re housed inside a custom 3D-printed base, which includes space for an external switch and USB power supply input.
Inserted in the base is a laser-cut piece of acrylic, which is modular and easily swappable.
Finally, I wrote some simple animations of my own.
#include <FastLED.h>
#define LED_PIN 1
#define NUM_LEDS 15
#define BRIGHTNESS 255
#define LED_TYPE WS2812
#define COLOR_ORDER GRB
CRGB leds[NUM_LEDS];
void setup() {
delay(1000);
FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
FastLED.setBrightness(BRIGHTNESS);
}
void loop() {
/* Animation 1 */
for (int i = 0; i <= 510; ++i) {
static int hue = 0;
FastLED.showColor(CHSV(hue++, 255, 255));
delay(20);
}
/* slow color change across the entire spectrum of RGB colors */
/* Animation 2 */
for (int c = 0; c < 3; ++c) {
int brightness = 0;
for (int i = 0; i < BRIGHTNESS; ++i) {
FastLED.showColor(CHSV(160, 255, brightness++));
delay(7);
}
for (int i = 0; i < BRIGHTNESS; ++i) {
FastLED.showColor(CHSV(160, 255, brightness--));
delay(7);
}
}
/* slowly waxing/waning blue glow */
/* Animation 3 */
for (int n = 0; n < NUM_LEDS; ++n) {
leds[n] = CHSV(map(n, 0, NUM_LEDS - 1, 0, (255 - (255 / NUM_LEDS))), 255, 255);
}
for (int c = 0; c < 40; ++c) {
FastLED.show();
CRGB temp = leds[0];
for (int i = 0; i < NUM_LEDS; ++i) {
if (i == NUM_LEDS - 1) {
leds[i] = temp;
}
else {
leds[i] = leds[i + 1];
}
delay(20);
}
}
/* rainbow spectrum wrapping around the strip */
}
And it’s finished!