Creepy Halloween Skull Decoration
by ccrome in Living > Halloween
18632 Views, 155 Favorites, 0 Comments
Creepy Halloween Skull Decoration
Here's a creepy & cool halloween decoration you can make at the TechShop!
I made this using a really interesting halftoning technique & software from Jason Dorie.
Let's jump right in!
Materials
I made this using a really interesting halftoning technique & software from Jason Dorie.
Let's jump right in!
Materials
- 24" x 18" x 1/8" acrylic or other CNC-able, clear or translucent material.
- Black paint that will bond with your material
- wood for framing, approx 1/2" thick.
- opaque backing sheet. MDF or similar. Roughly the same size as the front piece
- LED Light strip
- Arduino
- CNC Router
- Table saw
- Router rable
Generate Your CNC Files
The process is a little involved, but here's the outline:
- Open up the 'reactor' program. Import your image into it.
- Let it run.
- Export the file
- Open up the Vectric software and import the image
- trace the image to covert to vectors
- create a pocket toolpath with all the vectors.
- If the tool fits into all the little pockets, YEAH. Usuall it won't be right. If it doesn't fit and create a good carving path, you need to scale down your source image, and go back to step 1.
Paint Your Acrylic Black
I used clear acrylic, that I painted black. I used the CNC to remove the black paint.
Go to the ShopBot
Once the files were prepared, and the acrylic was painted, I headed over to the Techshop to do the carving.
I used carpet tape to hold the acrylic to the bed. It's pretty aggressive, and was kind of hard to remove. But worked out in the end.
I used carpet tape to hold the acrylic to the bed. It's pretty aggressive, and was kind of hard to remove. But worked out in the end.
Build a Box
The idea is to build a box that's white on the inside and black on the outside. The white is to reflect as much light from the LED strip as possible to give as uniform lighting as possible.
I don't have plans for the box, I just kind of winged it.
I sloped the rear so that it would pick up more light. I don't know how useful that really was, but the results came out pretty nicely as you'll see later.
I don't have plans for the box, I just kind of winged it.
I sloped the rear so that it would pick up more light. I don't know how useful that really was, but the results came out pretty nicely as you'll see later.
Build an Arduino Shield to Power the LED Strip
I used an analog RGB led strip. This required 3 PWM outputs from the arduino and 3 transistors to switch the 12 V from the power brick into the arduino.
Again, I didn't create a schematic, I just winged it. But I just used a simple 2n2222 transistor as a switch to turn on each of the R-G--B segments.
If I were to do it again, I'd use one of the light strips with a serial port so each LED can be controlled individually.
Put the LED strip and arduino into your box as shown.
I cut a hole for the 12 V power brick, as well as for the USB port so I can update the software without taking anything apart.
FYI, the arduino can run directly from 12V! No need for a separate regulator. Nice.
Again, I didn't create a schematic, I just winged it. But I just used a simple 2n2222 transistor as a switch to turn on each of the R-G--B segments.
If I were to do it again, I'd use one of the light strips with a serial port so each LED can be controlled individually.
Put the LED strip and arduino into your box as shown.
I cut a hole for the 12 V power brick, as well as for the USB port so I can update the software without taking anything apart.
FYI, the arduino can run directly from 12V! No need for a separate regulator. Nice.
Write a Little Sketch to Change Colors!
Here's my arduino sketch to drive the PWM.
For some reason, I can't upload the .pde sketch. so here it is inline. Sorry 'bout that.
/*
Fading
This example shows how to fade an LED using the analogWrite() function.
The circuit:
* LED attached from digital pin 9 to ground.
Created 1 Nov 2008
By David A. Mellis
Modified 17 June 2009
By Tom Igoe
http://arduino.cc/en/Tutorial/Fading
This example code is in the public domain.
*/
int pins[3] = {5, 9, 6};
int color[3] = {0, 0, 0};
int up = 1;
int down = 0;
int pausetime = 60;
#define NTARGETS 3
int targets[] = {0, 20, 10};
void setup() {
Serial.begin(115200);
// nothing happens in setup
}
int cmap[] = {
0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 7, 9, 12, 15, 18, 22, 27, 32, 37, 44, 51, 58,
66, 76, 85, 96, 108, 120, 133, 148, 163, 179, 196, 215, 234, 255};
#define MAPSIZE (sizeof(cmap)/sizeof(cmap[0]))
void printstuff()
{
return;
if (0) {
Serial.print(cmap[color[0]]);
Serial.print(", ");
Serial.print(cmap[color[1]]);
Serial.print(", ");
Serial.println(cmap[color[2]]);
} else {
Serial.print(color[0]);
Serial.print(", ");
Serial.print(color[1]);
Serial.print(", ");
Serial.println(color[2]);
}
}
void loop() {
int dly = 30*4;
int rnd = random(3);
int target = targets[random(NTARGETS)];
int dir;
if (color[rnd] < target)
dir = up;
else
dir = down;
if (dir == up) {
while(color[rnd] < MAPSIZE-1) {
analogWrite(pins[rnd], cmap[color[rnd]]);
color[rnd] += 1;
printstuff();
delay(dly);
}
delay(dly*pausetime);
}
if (dir == down) {
while(color[rnd] > target) {
analogWrite(pins[rnd], cmap[color[rnd]]);
color[rnd] -= 1;
printstuff();
delay(dly);
}
delay(dly*pausetime);
}
}
For some reason, I can't upload the .pde sketch. so here it is inline. Sorry 'bout that.
/*
Fading
This example shows how to fade an LED using the analogWrite() function.
The circuit:
* LED attached from digital pin 9 to ground.
Created 1 Nov 2008
By David A. Mellis
Modified 17 June 2009
By Tom Igoe
http://arduino.cc/en/Tutorial/Fading
This example code is in the public domain.
*/
int pins[3] = {5, 9, 6};
int color[3] = {0, 0, 0};
int up = 1;
int down = 0;
int pausetime = 60;
#define NTARGETS 3
int targets[] = {0, 20, 10};
void setup() {
Serial.begin(115200);
// nothing happens in setup
}
int cmap[] = {
0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 7, 9, 12, 15, 18, 22, 27, 32, 37, 44, 51, 58,
66, 76, 85, 96, 108, 120, 133, 148, 163, 179, 196, 215, 234, 255};
#define MAPSIZE (sizeof(cmap)/sizeof(cmap[0]))
void printstuff()
{
return;
if (0) {
Serial.print(cmap[color[0]]);
Serial.print(", ");
Serial.print(cmap[color[1]]);
Serial.print(", ");
Serial.println(cmap[color[2]]);
} else {
Serial.print(color[0]);
Serial.print(", ");
Serial.print(color[1]);
Serial.print(", ");
Serial.println(color[2]);
}
}
void loop() {
int dly = 30*4;
int rnd = random(3);
int target = targets[random(NTARGETS)];
int dir;
if (color[rnd] < target)
dir = up;
else
dir = down;
if (dir == up) {
while(color[rnd] < MAPSIZE-1) {
analogWrite(pins[rnd], cmap[color[rnd]]);
color[rnd] += 1;
printstuff();
delay(dly);
}
delay(dly*pausetime);
}
if (dir == down) {
while(color[rnd] > target) {
analogWrite(pins[rnd], cmap[color[rnd]]);
color[rnd] -= 1;
printstuff();
delay(dly);
}
delay(dly*pausetime);
}
}
Enjoy!
Button it up, and enjoy your new decoration!