November 2, 2009

Cylon Pumpkin



This has been done before. There are several good ways to do it: most use either a 555 timer chip and decimal counter chip, or an Arduino. Stefan and I used an Arduino (Boarduino, technically) which limited our scanner to 14 LEDs. No problem --- 14 gives a nice scanning effect!

Here's how we wired it: the numbers on the Boarduino block refer to the digital lines d0--d13.

It's only necessary to have one current-limiting resistor in the circuit, rather than one on each LED, since only one LED is on at a time and the LEDs prevent current from flowing back into the Boarduino on the "off" pins.

Now for the code. It's relatively simple: just count up and down, turning on and off the count LED as you go.

// Cylon pumpkin driver
// Eric Ayars
// 10/24/09

#define MAXLIGHT 14

byte Wait = 50;        // Time each light is on, in ms
byte EndWait = 250;    // Time all lights are off at the ends

void setup() {
    // Set all pins to output
    for (byte j=0;j
        pinMode(j,OUTPUT);
    }
}

void loop() {

    // Count up from 0 to 13, setting the light
    // for each count.
    for (byte j=0;j
        digitalWrite(j,HIGH);
        delay(Wait);
        digitalWrite(j,LOW);
    }

    // Pause at the end
    delay(EndWait);

    // Count back down from 13 to 0, setting lights
    // as it goes again.
    for (int j=MAXLIGHT-1;j>=0;j--) {
        digitalWrite(j,HIGH);
        delay(Wait);
        digitalWrite(j,LOW);
    }

    // Pause at the end
    delay(EndWait);

}

Here's Stefan with the completed "eye-bar". We didn't have a section of proto-board long enough to hold the entire scanner, so we split a long piece and spliced it together in the middle with short wires. This gave us the option of bending the unit in the center, which proved handy when mounting it in the pumpkin!

If you look closely, you can see that we used two 1k-ohm resistors in parallel instead of a 500-ohm resistor for the current-limiting resistance. Whatever comes in handy...

Rather than solder the eye-bar directly to the Boarduino pins, we soldered the wires to 8-pin female headers that then connected to the Boarduino. We labeled the headers to avoid confusion. :-) One side of the Boarduino has pins 0-7, and the other side has pins 8-13 and a connection to ground.




Finally, we ran the wires/header-pins through a slit in a freezer bag, then sealed the slit with hot-melt glue. (Silicon RTV would have been a better choice than hot-melt glue, but we were out.) We could then keep the battery and Boarduino away from wet (and conductive) pumpkin guts.



We modeled the pumpkin after this guy, since Stefan declared it to be "the best-looking Cylon ever". Give him time: when he gets older he'll gain a proper appreciation for Number Six!

1 comment:

  1. Analog pins 0-5 can also be referenced as digital pns 14-19, if you want more than 14.

    ReplyDelete