Mardi Gras Costume
My partner and I used to co-host an
annual Mardi Gras fundraiser party. As befits the theme, it
was a pretty wild party. For 2008 I made a "Mardi King"
costume with 16 BlinkM LED lights controlled by a
Lilypad Arduino-clone over an I2C bus. The Lilypad
and power-supply were worn in a belt under the costume.
Since this was a costume I didn't do a lot of testing
before hand. Otherwise I might have known the battery
pack, right above my groin, would become extremely hot
with the current draw of 48 LEDs and 17 microprocessors.
That was a pretty interesting design mistake to say the
least. At least there is a lot of alcohol at this party
which helped me deal with the burning sensations... I
had grand ideas about the programming but it ended up to
be very simple. The BlinkMs contain several canned
sequences and the user can load their own custom
sequence. I loaded a series of color changes relating to
Mardi Gras colors. The BlinkM's use a built-in
oscillator which is pretty inaccurate. After a few
minutes of running the same program the BlinkMs are
completely out of sync which makes for a nice light
show. The Arduino board just sampled a push-button
switch and selected between the different programs in
the BlinkMs. My favorite is the Thunderstorm program
which causes rippling flashes of lighting across my
costume and body.
Touchscreen Widget Set
In 2006 as I began to work on the project
that would eventually become the solid-state lighting
control project I decided it would be a good idea to write
my own low-resource GUI library for an embedded Linux
platform in C++. I wanted to be able to make low-cost
touchscreen control panels. I looked around quite a bit and
settled on writing a library on top of Greg Haerr's
Nano-X graphics library. I designed an
architecture and wrote a handful of widgets. It runs on
Linux, Mac OS X and embedded Linux distros (I had it
running on a Linux iPaq). Over time I was more and more
consumed with specific issues related to lighting
control and realized that building my own touchscreen
controls would be non-productive since there were so
many better devices out there that could be used (for
example Apple's iPhone and other touchscreen devices).
However I learned a lot about designing a widget toolkit
and had a wonderful platform to do quick-and-dirty
prototypes with. The image above is from the
Remote Heart Rate
Telemetry system showing buttons, groups of
related buttons, pop-up selectors, text objects and
Obsolete Display Digital Clock
The Obsolete Display Digital Clock was an
idea to make a digital clock (what nerd hasn't made at
least one in their life) using only obsolete digital
displays. This clock uses nixie tubes (50s), incandescent
seven segment displays (60s) and HP dot matrix LED displays
with built-in decoder (70s). A PIC 16C57 drives it from a
32 kHz watch crystal. The timekeeping loop takes exactly
8192 instructions, no more, no less, per second. I have no
idea why I just didn't use one of the PIC timers. One kinda
clever thing about this clock is after driving out BCD
signals for each digit I only had one pin left over for
time setting functions. Pressing the button attached to
that signal for less than a second resets the seconds and
increments the minutes. Holding it down for more than a
second starts incrementing the hours making it easy to make
daylight savings changes without affecting the minutes or
seconds. I belong to a nixie group on yahoo and those guys
build fantastically complex clocks that set themselves from
a variety of time services and have a million other
functions as well.
costume using about 30 feet of flexible neon tubing woven
into a body suite, a plasma globe, miniature UV lights and
animated LEDs. There were 64 LEDs forming an electric bolt
controlled by a PIC.
Scrolling Birthday card
A (thick) birthday card built in a small picture frame using a 5x7 LED array driven by a PIC16C57 running at 1 MHz. I wrote a C program that took the message and created a set of tables made with the "retlw" instruction containing the bit-map data for the message.
I found a toy tricorder at a garage sale many years ago. It had a built-in sound chip and a back-lit graphic. I added a bunch of LEDs controlled by a PIC. Included were 4 very early blue LEDs. They were not very bright but at the time they were amazing (and incredibly expensive).
Elf II computers
$99 Quest "Elf" complete with 256 bytes of memory and a 32 byte monitor
My homebuilt Elf II (note the piezo-electric fan)
I got started in computers as a freshmen in high school with the quirky RCA 1802 CMOS microprocessor when my father bought me a $99 Quest Electronics Elf computer. I soon wanted to do more than could fit in the board's 256 bytes (!) of memory. I couldn't afford the Quest Super Elf so started building my own clone of the Netronics Elf II. Like most high school nerds, I spent my hard earned money on computer parts for this machine. I was always excited when I could buy a new board for it. A 4 Kbyte memory board was a big deal ($89 for the kit form). My machine even ended up having a math co-processor for Netronics incredibly slow 6 Kbyte Full Basic. They essentially used a calculator chip that the BASIC interpreter fed RPN-based op-codes to and read back the results. My machine boasted 10 slots to Netronics' 5 slots. I didn't really know anything about digital design and designed the machine by copying parts of various other designs I found published in hobby magazines and in RCA's application notes. It is amazing the machine worked at all. It did and I had hours of fun and developed a lifelong love of computers.