| LED Cyber Brows
I haven't thought of a good name for this project. So for now they are LED Cyber Brows.
So, what are Cyber Brows? Cyber Brows clip onto the bridge of your glasses and display a variety of animated patterns via ultra bright LEDs. The different display patterns come in groups of five. To select within a group you tip your head quickly to one side or the other. This is analogous to hitting the left and right cursor keys. To select a new group, you tip your head forwards or backwards.
In case there's a pattern that you're fond of, you can also 'lock' the pattern in place. Navigate to the pattern you like and look up for three seconds. Now, normal navigation is disabled. To re-enable navigation, look down for three seconds. That's it.
The LEDs are nicely visible during the day but spectacular at night.
As with my other projects I am offering the schematics, PCB patterns and code for free.
This idea developed from a suggestion my son made. A few months back, he suggested incorporating LEDs into a set of glasses. Because, honestly, everyone loves blinky lights. We discovered this over the years with Halloween costumes. Blinky lights equals viewer satisfaction. As usual, my imagination went overboard and the idea for this project was born.
I'd always wanted to create a project using one of the tiny but powerful microcontroller chips that MicroChip produces. One that I'd had my eye on is the PIC12F1840 which comes in a diminutive 8 pin SMD package. It packs 4K words of flash ram, 256 bytes of data SRAM, and 256 bytes of EEPROM. It has 6 I/O lines (one of which is sadly input only), a relatively high drive/sink current of 25mA which is good for driving LEDs, and hardware I2C (plus other features I didn't need). Using Charlieplexing I can control 12 LEDs using only 4 I/O lines. Finally, since I/O lines are scarce on this chip I decided to use an I2C 3-axis accelerometer as an input device.
At first I was afraid that this wouldn't work. Driving the LEDs needs 4 I/O lines and the I2C needs 2 I/O lines and I only have 5 output I/O lines. Fortunately I was able to share one I/O line. I alternately used it to drive LEDs and in between to act as the I2C data line. As long as you don't toggle the I2C clock line, I2C doesn't care what you do to the data line. The one proviso was that I had to use large value pull-up resisters on the I2C lines. Otherwise, the small current flowing through the pull-up was sufficient to dimly light up a few LEDs when not using the I2C function. Instead of 4.7K I used 47K resistors. The I2C still functions fine and the leakage is so small the LEDs were not affected.
The basic premise was to create a glasses-mountable device that could produce interesting visual displays. Of course the classic Cylon and Gort patterns would be prime examples. Switching between displays would be accomplished by nodding your head in different directions. You can see this in the attached video.
To program the PIC chip I used the Hi-Tech PIC10/12/16 compiler. I did the development with the free LITE version. Adding more features to the project will require purchasing the Standard version of the compiler since the existing code almost completely fills the available flash ram.
Next Section: Cyber Brows - The Hardware