Category: Artworks

Skee Ball Fire!

Here’s a quick video of the Skee Ball Fire game.

Tags :

Skee Ball Coming Together

The Skee Ball game that I’m building for the Crucible’s volunteer party is coming along nicely.

I’ve spent the past few days working on the cups, electrical hookups and the fire effect that makes the whole thing fun.

The cups are made from 4″ PVC drain connectors and 4″ to 3″ reducers. There’s a mounting bracket welded onto a stainless steel hose clamp that goes around the 3″ end of the PVC reducer. With a slot cut into the reducer and the switch mounted onto the bracket, it should allow a ball to fall through and trip the switch. At least it should work once the lever for the switch is bent a bit to ensure that it’s in the path of the ball as it falls through. The only real concern I have about this is the amount of time that the switch will be on to trip the fire effect. If the ball passes through too fast, then the fire effect might be too short. But at this point, I’m will to wait and see how it works once they’re installed.

The electrical system runs off a regular 120v socket. The switches mounted on each of the cups are used to provide power to the outlets seen toward the bottom of the photo. The original idea was that there would be three solenoids on the poofer that would provide a small, medium and large poof based on which cup the ball went through. The lowest cup would have the smallest poof, the two above it in the center would have the medium poofs and the two in the upper corners would have the largest. This would hopefully mesh with the difficulty in getting the ball into the cups. Unfortunately, I wasn’t able to come up with a simple wiring setup that would allow this to work. So I went with plan B. There would be three different size solenoids on the poofer and the three pairs of outlets would be wired to allow the different solenoids to trip based on which cup the ball fell through. The lowest cup powers the left most socket, the upper middle two power the center socket and the upper corners power the left most socket.

The fire effect can be seen in the image on the right. The rail along the top provides a pilot light that ignites the propane as it is expelled from the solenoids. It’s wrapped in stainless steel wool to give it some resistance to being blown out but diffusing the propane coming from it. There’s a 1/4 turn valve on the left that’s used to control how large of a pilot light is burning.

The different size solenoids can be seen in the center. They’re 3/4″, 1/2″ and 1/4″ normally closed solenoids with a propane resistant seal like buna-n or viton. Because of the three different size orifices on the solenoids, they’ll produce three different sized fire balls.

The white tank on the bottom serves as an accumulator to hold the propane that’s going to be discharged through the solenoids. Because of the volume of propane held in the accumulator, the propane rushing out of the solenoids forms a fire ball instead of just a stream of flame. That makes for a great fire effect!

The three power cords can be seen coming from the solenoids. They’ll be connected to the three sockets mentioned earlier.

The net effect of the poofer going off is pretty cool!

The whole project is starting to come together. Kevin and Matt are almost finished with the core of the ramp. The major pieces have neen cut and glued up. The ball return has been installed, that’s the 4″ PVC drain pipe that’s seen toward the bottom of the image on the right. And the lift bump is almost finished.

This’ll be one kick-ass skee ball game when we’re done!

 

Tags :

Building a Skee-Ball Game, Part 1

We have lots of volunteers working at the Crucible. They’re amazing and without them, we’d be lost. It’s a pretty good trade, volunteer time for discounts on classes or access to specific studio areas to work on individual projects. And once a year we throw a volunteer appreciation party. The staff of the Crucible come together to organize and run a party to help show our volunteers how much we appreciate them. There’s usually a theme around the party. Last year, it was Octoberfest. This year, it’s an evening at the carnival.

To help with the festivities, I came up with a hair-brained scheme to build a skee-ball game. And of course with the usual Crucible twist, there’s fire involved. But I’ll get to that later.

Firing up SketchUp, I came up with a simple design based on what I remembered from years gone past and a bit of online research. The whole game is a bit more than 10′ long and a little over 2′ wide.

 

Of course, I’m going to solicit help from fellow studio managers to make this happen. Matt’s working on the main ramp and the bump to flip the balls into the air.

And Kevin’s working on the lathe, turning out some balls to use with the game.

In addition to being studio managers, Kevin and Matt are the amazing builders, fabricators and overall goods guys behind Just Fine Design/Build.

Here’s the part I’m currently working on, the catch for the balls. The cups are made from 4″ PVC connectors, a  short piece of 4″ PVC and a 4″ to 3″ PVC reducer.

 

 

 

 

 

There’s a lot more work that needs to be done. The trip switches for the poofers need to be installed so that balls that fall through the cups will trigger the poofers. The ball return needs to the added. The circle catches that go around the 3 center holes and the catch for the bottom hole needs to be added. The back, painting, wiring and testing. And the poofer, let’s not forget that. It all needs to be done. But we got a lot of work done today and it’ll hopefully be finished in time for the party.

Tags :

The Eyes, They be Moving!

Here’s a short video that shows the eyes on Exuro moving. You can see Mac moving around in the screen on the lower right of the video and the eyes moving to track the closest part of him. I’ll post more details soon but right now I’m just psyched that they’re moving and tracking pretty well!

Tags : , ,

Arduino and LEDs

I’m a software developer by training and one aspect of the software that I’ve always developed is that it just lives inside a computer or network. It doesn’t interact with the real world. That’s been well and good for the last 20 years but of late I’ve been wanting to break out and have software that I develop effect some change in the physical world.

There have been fits and starts where I’ve tried writing code for some embedded system or chip but the mountain of basic knowledge thats needed to get started has always been overwhelming. I would read some book (like Embedded System Design on a Shoestring ) and while the books make it seem easy to get going, the projects would always die a quick and quiet death. There’s nothing wrong with Embedded System Design on a Shoestring or any of the other books I tried, many people have used them quite successfully. Unfortunately it just never clicked for me.

But that’s all changed.

I recently discovered the Arduino platform. The system provides a small microprocessor, a bunch of I/O pins, a USB connection and a very easy to use IDE. The basic features of the platform allow for most any type of interaction with the physical world that I can currently envision. I’m sure there will be some scenario that it won’t support but for right now, I’m very happy with the capabilities.

One of the problems that I encountered in the past was connecting an embedded system to a host platform. It may have involved a vendor specific hardware or something else that wasn’t supported on my systems. The Arduino uses a USB port. After installing the needed drivers on my OS X system, I was able to connect the Arduino without any problems. Seems way easier than other solutions.

The place that I see the Arduino really shining is with the IDE. It’s different that any other IDE that I’ve used but the interface is really straight forward and very easy to use. I was able to quickly try out one of the sample C programs that turns an LED on and off again. The thing that really got me was that it compiled, loaded and ran on the first try. This was just brilliant. Easy to use and works the first time. Outstanding.

When a friend asked for help with a project he was doing and told me that he’d like to have 3 LEDs turning on and off in a random fashion, I knew that an Arduino would be the perfect tool to use. I was able to rework the sample code for turning an LED on and off to work on this project.

The idea behind the project is to have an LED inside of a wax pumpkin where the LED would turn on and off like the light on a firefly. There would be three pumpkins on a small platform, hence the three LEDs.

Here’s the code for the project:

/*
* firefly multibutt illumination
*
* Copyright (c) 2008 Peter Kropf. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
 
 
// all times are in milliseconds
#define SPIN_DELAY 10
 
#define ILLUMINATION_MAX       255
#define ILLUMINATION_MIN       0
#define ILLUMINATION_INCRIMENT 5
 
#define MAX_ILLUMINATION_TIME 2000
#define MIN_ILLUMINATION_TIME 500
 
#define MAX_DARK_TIME 10000
#define MIN_DARK_TIME 2000
 
 
#define LED_COUNT    6
#define LED_OFF      1
#define LED_ON       2
#define LED_SPINUP   3
#define LED_SPINDOWN 4
 
int led_pin[LED_COUNT]   = {3, 5, 6, 9, 10, 11};
int led_state[LED_COUNT] = {LED_OFF, LED_OFF, LED_OFF, LED_OFF, LED_OFF, LED_OFF};
int led_spin[LED_COUNT]  = {0, 0, 0, 0, 0, 0};
int led_level[LED_COUNT] = {0, 0, 0, 0, 0, 0};
 
 
void setup()
{
    randomSeed(analogRead(0));
}
 
 
void loop()
{
    for (int led = 0; led < LED_COUNT; led++) {
        switch (led_state[led]) {
        case LED_OFF:
            if (led_spin[led] > SPIN_DELAY) {
                led_spin[led] -= SPIN_DELAY;
            } else {
                led_state[led] = LED_SPINUP;
            }
            break;
 
        case LED_ON:
            if (led_spin[led] > SPIN_DELAY) {
                led_spin[led] -= SPIN_DELAY;
            } else {
                led_state[led] = LED_SPINDOWN;
            }
            break;
 
        case LED_SPINUP:
            if (led_level[led] < ILLUMINATION_MAX) {
                led_level[led] += ILLUMINATION_INCRIMENT;
            } else {
                led_level[led] = ILLUMINATION_MAX;
                led_state[led] = LED_ON;
                led_spin[led]  = random(MIN_ILLUMINATION_TIME, MAX_ILLUMINATION_TIME);
            }
            break;
 
        case LED_SPINDOWN:
            if (led_level[led] > ILLUMINATION_MIN) {
                led_level[led] -= ILLUMINATION_INCRIMENT;
            } else {
                led_level[led] = ILLUMINATION_MIN;
                led_state[led] = LED_OFF;
                led_spin[led]  = random(MIN_DARK_TIME, MAX_DARK_TIME);
            }
            break;
        }
 
        analogWrite(led_pin[led], led_level[led]);
    }
 
    delay(SPIN_DELAY);
}

The code is pretty straight forward. Each of the LEDs has a particular state that it’s in: off, on, spinning up or spinning down. That’s tracked in the led_state array. The led_level array holds the current level of illumination for each of the LEDs and the led_spin array holds the random amount of time that the LED will remain on or off. The rest of the code manages the arrays, sets the current level of the LEDs and waits for a small delay before doing it all over again.

Note that the code is currently setup to illuminate up to 6 LEDs since that’s the number of digital I/O lines on the Arduino that supports pulse width modulation, PWM. PWM is how the Arduino is able to vary the light level produced by the LEDs.

Here’s a short video I took while working on the LED timing. It shows only one LED instead of the three that were used in the finished project.

With this project successfully completed, I’m looking forward to my next project: having a flashing light turned on when a specific voicemail box on a Asterisk based phone system has messages waiting. This’ll involve connecting an Arduino to ethernet and controlling a 120v circuit. I can’t wait.

Tags : ,