Mardi Gras Costume

mardi_costume_front mardi_costume_back

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

hrtu_raw (sm)

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 graphics objects.

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.

Lit Costume

costume_2_f2_sm costume_2_r_sm

A 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

(click image for video)

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.


(click image for video)

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.