Archives for the ‘Crushtoberfest ’09’ Category

mustache-themed Hi-Striker

histriker

So Crushtoberfest is approaching again, and the party plans are in full swing. In case you missed it, Crushtoberfest ’08 was the house party that capped off a six week mustache growing contest among BDC employees and their friends and families. Last year’s feat-of-strength competition featuring the Captains of Crush grippers was a huge success, so we decided to step it up this year.

We liked the idea of a Hi-Striker, the classic carnival game where you swing an oversized hammer and try to ring the bell. But renting a Hi-Striker is not cheap, and we saw the opportunity to build something awesome. So going with the vague carnival theme (and the overt mustache theme) I generated this concept sketch for an electronic Hi-Striker, featuring a larger-than-life Tom Selleck head with light up eyes and fireballs shooting from his ears.

Here’s the plan: The contestant will strike the rubber pad with the hammer, compressing the sealed rubber hose under it. An air pressure sensor attached to one end of the hose will generate an analog voltage (up to 5v), the Arduino Mega will read the voltage and light up the LEDs according to a predefined scale. If the hit is a “ringer” then the LEDs will light all the way to the top, Tom Selleck’s eyes will light up, and fireballs will shoot from his ears. BTW the fireball effect is a flash paper/model rocket ignitor thing we worked out for last year’s party but never used. We also plan to have sound effects go with the LEDs, using the Adafruit Wave Shield for Arduino.

Stay tuned for more.

Hi-Striker construction begins

Construction on the Selleck Striker began without much detailed planning. I want to use as much scrap materials as I can, and luckily I have a lot of scrap wood lying around. The “striker” part is built around four 2x6s glued and screwed together to form a nice sturdy block, which will be topped with some thick rubber to cushion the hammer’s impact. The “sleeve” part holds the striker over the heater hose, which gets compressed when the hammer comes down.


The backboard is 8 feet tall, made with extra 1x and plywood. I drilled and countersunk holes in the front for the LEDs to poke through, and left some slots in the 1x cross-pieces for the LED wiring. I built a little “backpack” compartment for the electronics, and primed and painted everything white.

LED wiring

The Arduino Mega has 54 digital I/O pins, 50 of which are each driving an LED on the Hi-Striker. Each pin can drive up to 40mA, so the only additional components needed are one 100k current-limiting resistor per LED.

For testing, a simple cascading loop runs through the (first 16) LEDs one at a time:

const int ledCount = 16;    // the number of LEDs in the bar graph
int ledPins[] = { 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 };   // an array of pin numbers to which LEDs are attached

void setup() {
  // loop over the pin array and set them all to output:
  for (int thisLed = 0; thisLed < ledCount; thisLed++) {
    pinMode(ledPins[thisLed], OUTPUT);
  }
}

void loop() {
  // loop over the LED array:
  for (int thisLed = 0; thisLed < ledCount; thisLed++) {
    digitalWrite(ledPins[thisLed], HIGH);  // turn on the LED
    delay(20);                             // wait
    digitalWrite(ledPins[thisLed], LOW);   // turn off the LED
  }
}

LEDs & gravity

I thought it would be a nice touch if the LEDs in the Selleck Striker behaved more like the metal ringer in an old school mechanical hi-striker. So rather than rising up the scale in a linear way, what if it looked like the LED “ringer” was being pulled down by gravity (and friction, and air resistance) like the real thing?

time_distanceSo I figured an ascending object will decelerate in the same way a falling object will accelerate, since they’re both subjected to the same force (gravity). I found some formulas for acceleration due to gravity, particularly :

d=gt2

where d = distance, g = the gravitational constant, and t = time. I would calculate the trip from top to bottom as if the ringer was falling, then use that data in reverse.

The LEDs turn on in sequence, with a delay value in between to determine how long each one stays on (and how fast the “ringer” appears to move). So in order to determine that value I need to solve for t in the equation above. So:

t=sqrtt_g

I know that on Earth the gravitational constant — or g — is 9.8 m/s² (meters per second per second). I know the distance d between each LED is 1.37″, or .035m. So the time tx to get from the very top LED to the next one is:

tx

So the first .035m step down from the top will take 59ms. In order to find tz for the second step, I need to find ty for the total distance from the top to the second step (.035m x 2 = .07m), then subtract tx for the first step:

distance

So:

equations

I need to do this for each of the 51 steps (50 LEDs plus the very top, the winner!). Actually, I’m not calculating this at all. I’ll let the Arduino do all the calculations, and save the delay value for each step in an array that it can quickly access when it needs to. Here’s how I did it in the Arduino script:

  float gravity_constant = 9.8;                         // the constant of gravity, or G
                                                        // we can adjust this to tweak the effect

  int gravity[50] = {};                                  // set up the gravity array

  for (int i = 1; i <= 51; i++) {                        // this will loop 51 times
    float distance_x = i * .035;                         // calculate the total distance from the top to the LED in question
    float distance_y = (i - 1) * .035;                   // same distance, minus one step 
    float time_x = sqrt(distance_x / gravity_constant);  // the time it takes for an object to fall distance_x meters
    float time_y = sqrt(distance_y / gravity_constant);  // the time it takes for an object to fall distance_y meters
    float time = time_x - time_y;                        // the time it takes for an object to fall to our LED from the one before it, in seconds
    int time_ms = time * 1000;                           // convert to milliseconds
    gravity[i] = time_ms;                                // add this value to the gravity array
  }

The gravity array will look something like [59, 26, 16, 14, 13, 12, 11, 10, 9, etc.......], dropping rapidly at first and then slower until it levels off at 4ms or so. If we then light the LEDs in sequence, applying these delay values to each step:

  int level = 48;             // this is the level the person hit to
                              // * entered manually for testing purposes,
                              // in the final product this will be determined by 
                              // the force of the hammer strike  

  for (int i = level; i > 0; i--) {
    digitalWrite(ledPins[level - i], HIGH);
    delay (gravity[i]);
    digitalWrite(ledPins[level - i], LOW);
  }

then we get something like this:

Note: the blinking at the beginning is the Arduino booting up, and the blinking at the end was added later to highlight the level of the hit.

everything’s better with fireballs

I never intended for the Selleck Striker to include fireballs. But this time last year we started thinking about fireballs for something else and got all the pieces together, so they were really just waiting around for something awesome like this. Here’s how it’ll work.

The fire itself is created by igniting “flash paper”, which is a nitrocellulose paper used by magicians to create relatively safe indoor fire effects in their act. Basically the stuff flares up and it’s gone… no burning embers, hardly any ash at all. It is fire, but you can basically hold it in your hand, it’s there and gone that fast.

The flash paper is ignited by a model rocket engine ignitor, which is essentially a tiny incandescent filament with some flammable paste packed around it. You apply 6-12 volts with enough current and it flares up breifly, but plenty long enough to light the flash paper. The Arduino can’t supply nearly enough current to light it, so I’ll end up using a transistor to switch a higher-current (and slightly higher voltage) power supply to the ignitor.

For now I’m just concerned with the hardware. I’d like to have a replaceable “charge” that can be unplugged once it goes off, and replaced with a fresh one. So the sketch below shows a small metal tube with a 1/4″ phono plug on one end that plugs into a matching jack behind the Tom Selleck head.

fireball_charge

The tube is copper and the end fitting just slips on snugly, but everything else turned out just like the sketch:

For now I’m using a 9V battery touched across the plug’s contacts. The trick, it turns out, is packing the right amount of flash paper in the right way. It took  a few tries, but I think the third attempt got it right:

new paint job

The inspiration:

It’s a loose interpretation…

Hi-Striker control panel

Yesterday I finished the control panel for the Selleck Striker and started hooking it up:

controlPanel

reset button – Before a new contestant hits the striker, the reset button clears the LEDs, then checks the difficulty setting and applies any changes. It’s a SPST, switching 5V from the Arduino to one of its analog input pins. High on the pin = reset.

play/demo switch – Demo Mode plays a scrolling LED effect, Play Mode waits for a change in the pressure (like a hammer strike!). This is a SPDT (though I could have just used a SPST) switching 5V from Arduino to one of its analog input pins. High on the pin = Demo Mode, low on the pin = Play Mode.

analog_inputdifficulty knob – Just a 100K potentiometer that sends 0 to 5V to one of the analog input pins. This will allow us to adjust how much force is needed to get to the top.

score display – This 3-digit numeric LED display will show the “score” of the strike. I’m still not sure how I’ll calibrate it, but the idea is that you get a finer resolution score than the 0-50 LEDs in front. I’m thinking of having this also display the “difficulty” setting when you twist the knob.

striker connector – This is an RJ-45 connection for the striker portion, so that the two halves aren’t permanently tethered to each other. I’m only using three of the eight conductors.

audio out - This 1/4″ mono jack will send sound effects and other audio to the sound system.

Also note the the three Arduinos in the bottom of the photo. The Mega on the right will handle the LEDs and input elements, the NG in the middle drives the 3-digit LED display, and the Duemilanove with the wave shield on the left plays the sound effects. They’ll be communicating via their serial ports.

Selleck head

Sam is working on the Selleck head for the top of the Hi-Striker and it looks awesome!

selleckHead1

The photo is deceiving… that thing is almost four feet high.

everything’s better with fireballs, part II

Three days left till Crushtoberfest, and I prepared a total of ten fireball launchers for the Hi-Striker. They’re used in pairs, so that gives us five “wins” worth of awesomeness. Here they are:

soldering the ignitors

First I cut the copper tubes to length, drilled each end cap and JB-Welded 1/4″ phono plugs into each one. Then I soldered model rocket ignitors to the phono plugs’ contacts inside the caps. The gray boxes are aluminum project boxes with phono jacks installed in one side. These will be mounted to the back of the Selleck head, but for now they were a good way to hold each cap as I was soldering. I then assembled the tubes to the caps and used a little electrical tape to hold them together.

cutting the flash paper

I cut each 8″ x 9″ sheet of flash paper into strips (across the short length),

twist it up

folded all the strips in half together and twisted them loosely,

stuff it in

then stuffed the whole thing into the end of the tube.

finished fireball launchers

Done!

topping off the striker

IMG_4935 Here’s how I added some padding to the top of the “striker” part of the hi-striker. I picked up a used tire from my local mechanic and managed to cut a couple of rectangular pieces out of the tread. After some trial and error I found the best way to cut through a tire with steel radials is with a sabre saw with a metal cutting blade. The shop stunk like burning rubber but it cut pretty quickly.

IMG_4936

I used the nailgun with some trim nails to tack two layers onto the striker. It can probably use some trimming on the corners, but it will do the trick.

finishing the Selleck Striker

Just one more day till Crushtoberfest, and the Selleck Striker is ready to go. Last night I mounted the head (nice job Sam!) and drilled its eyes for LEDs. I also mounted the fireball launchers and wired everything up.

selleck head wiring the Selleck head

Crushtoberfest promo video!

A few photos from Crushtoberfest ’09

image002

The Selleck Striker ready for action.

image003

Lisa about to show it who’s boss.

100_3711

Beer pong!

100_3714

That’s a lot of facial hair.