Creepy Halloween Skull Decoration

by ccrome in Living > Halloween

18632 Views, 155 Favorites, 0 Comments

Creepy Halloween Skull Decoration

scull_500_reactor.jpg
IMG_1635-001.JPG
1140.jpg
1138.jpg
1125.jpg
1134.jpg
1132.jpg
1127.jpg
1126.jpg
scull_500_reactor_invert.jpg
skull_500.jpg
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
  • 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
Tools
  • CNC Router
  • Table saw
  • Router rable

Generate Your CNC Files

skull_500.jpg
vectric.jpg
The process is a little involved, but here's the outline:
  1. Open up the 'reactor' program.  Import your image into it.
  2. Let it run.
  3. Export the file
  4. Open up the Vectric software and import the image
  5. trace the image to covert to vectors
  6. create a pocket toolpath with all the vectors.
  7. 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.
Once you've created the carving path, you can move on to the hardware!

Paint Your Acrylic Black

1125.jpg
1126.jpg
I used clear acrylic, that I painted black.  I used the CNC to remove the black paint.  

Go to the ShopBot

IMG_1613-001.JPG
1127.jpg
1132.jpg
1134.jpg
IMG_1606.JPG
1138.jpg
1140.jpg
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.


Build a Box

IMG_1626.JPG
IMG_1623.JPG
IMG_1624.JPG
IMG_1625.JPG
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.


Build an Arduino Shield to Power the LED Strip

IMG_1637.JPG
IMG_1636.JPG
IMG_1638.JPG
IMG_1639.JPG
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.


Write a Little Sketch to Change Colors!

IMG_1635-001.JPG
IMG_1634-001.JPG
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);
  }
}

Enjoy!

IMG_1635-001.JPG
Button it up, and enjoy your new decoration!