Press a button and the time shows up for three full seconds before putting the MCU to sleep. With the PWM blazing away at 60 full refreshes per second, there remains 50% CPU time available to do work. Pretty amazing for a ~$0.75 part. How time is represented:
Current second: fading yellow pixel, going from upper-left to lower right.
Current minutes (units): two-pixel wide blue column on far right. 0-8 are shown as pixels emanating from top as zero and bottom as 8. 9 is shown as a red pixel at the bottom.
Current minutes (tens): two-pixel wide blue column on middle right.
Current hours (units): two-pixel wide blue column on middle left.
Current hours (tens): two-pixel wide blue column on far left.
A potentiometer on the controller board mounted to the rear of the shadowbox cycles through five colors and ‘off’. Each 1/6 of a turn sends the next color in the palette to an RGB LED controlled by a local PWM driver.
An oversized scanned-matrix display using 10mm LEDs.
When Steven Colbert and Jon Stewart announced the Rally To Restore Sanity and/or Fear, my politically zealous brother wanted to add some flair to the party. We devised a satirical protest sign that would scroll conservative absurdities on one side of the sign and liberal nonsense on the other, reading such garbage from a hand-curated text file.
What it does
Displays arbitrary text/graphics in a variety of ways.
What it’s made of
74AHC595-series 8-bit shift registers
PFET transistors (to source current through columns)
Send it bunch of bits over SPI a zillion times a second and you get pretty text! The code linked to above just sets the stage – it’s up to you to send the display what you want to see. When I get some extra time (LOL) I’ll hook it up to a WiFi module and use it as a wall-clock.
It works, yay! Lessons learned:
Light-bleed into adjacent LEDs is easily fixed with some opaque heat-shrink tubing.
Each row has a considerable amount of capacitance that needs to be discharged with each row switch. Write an all-off sequence to the column drivers to do this.
Light output is considerably reduced when you scan the display, essentially reducing it to 1/7 (in this case using 7 rows) of the original brightness. You can overdrive the rows by 7x (in this case using 7 rows) to get around this but you must make sure your OE line is de-asserted until you start switching the rows or you’ll pop the LEDs.
Sometimes you just need a wristwatch, and sometimes you come across a bunch of super-sweet retro LED displays pulled from calculators of yore. I mean, what else am I going to do with my time?
Back in late 2009 my roommate was heckling me about never finishing my projects. At the same time, technologically absurd wristwatches were all the rage in the Maker community. Nixie Tubes, high-res OLEDs and discrete LEDs were the thing to have, battery life be damned.
I wanted a slightly different aesthetic and found exactly what I was looking for.
Push the “Display” button and the time glows at you for 3 full seconds.
That’s all the tutorial I have for now – you can read through main.c to see what the setting fields mean.
The watch worked well. One thing to note is the LED segments aren’t very bright when used with a coin-cell battery because those ultra long-life batteries can only source about 2mA sustained and 10mA pulsed. Attach a reasonable battery and things will lighten up.