Introduction: 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
  • 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

Step 1: Generate Your CNC Files

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!

Step 2: Paint Your Acrylic Black

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

Step 3: 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.


Step 4: 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.


Step 5: 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.


Step 6: 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);
  }
}

Step 7: Enjoy!

Button it up, and enjoy your new decoration!

Make It Glow Contest

Participated in the
Make It Glow Contest