



My goal for this project was to create a staff/walking stick/spear based on Spinel from Steven Universe. I wanted it to be something fun to carry around to Halloween parties for the rest of the week. Something striking and eye catching, creating it in my own style while keeping the tone of Spinel’s [dark + twisted love].
I really enjoy how this project came out, it feels really true to me and I was able to experiment with a few different techniques [laser. cutting, 3d printing]. I’m super interested in making more variations of this object, maybe based on different characters or moods.
Materials + Parts
Acrylic 1/8 Acrylic scrap: I ended up testing multiple various sizes and colors of acrylic sheets to see how they diffused the light
Adafruit Gemma M0
1 RGBW LED Neopixel Stick
Electrical Wires
USB Battery Pack
Solder
1 Black Feather Boa
Hot Glue
Transparent PLA
Stuffing
3D Print File Credits
Struggles
My biggest struggle was probably the 3d printing. While trying to print I ended up going through multiple versions of my design in order to troubleshoot the most efficient way to include the supports. I really enjoyed exploring the 3d printing community files, I have some printing experience but it was never something that really excited me. However, I found it really fun looking through all of the 3d print files that people upload to places like Thingiverse.
++ clearing out the supports out of something so narrow + long like the gem was way more tricky than I was expecting.
++ I did have to re-solder my Gemma 3 times because I kept messing up the ins/outs. Shoutout to Mallika + Tristan for helping me figure out what was wrong.



Sketch + 3D Printing






Circuit Diagram:

Code:
#define PIN 1
#define NUMPIXELS 8
Adafruit_NeoPixel strip(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.show();
}
void loop() {
// two quick pulses then rest
heartbeat();
delay(1000);
}
void heartbeat() {
for (int i = 0; i < 2; i++) {
pulse(255, 20, 100, 600, 200); // pinkish pulse: r,g,b, rise ms, fall ms
delay(150);
}
}
void pulse(int r, int g, int b, int riseTime, int fallTime) {
int steps = 30;
for (int i = 0; i <= steps; i++) { float bLevel = (float)i / steps; strip.fill(strip.Color(r * bLevel, g * bLevel, b * bLevel)); strip.show(); delay(riseTime / steps); } for (int i = steps; i >= 0; i–) {
float bLevel = (float)i / steps;
strip.fill(strip.Color(r * bLevel, g * bLevel, b * bLevel));
strip.show();
delay(fallTime / steps);
}
}
**I do feel like the photographer that was in the VFL got more progress shots than I did of this project so I’m hoping we get access to those. This was the least amount of documenting I’ve done for a project, which was surprising because initially i felt like I was capturing every step.