I was just thinking (seriously, it happens on occasion) that this might be a good time to bring everyone up to date with progress on my Countdown Timer project. As you may recall, this little beauty’s main mission in life is to display the years (YY), months (MM), days (DD), hours (HH), minutes (MM), and seconds (SS) to my 100th birthday.
The festivities will commence at 11:45 a.m. British Summer Time — which will be 5:45 a.m. Daylight Saving Time in the USA — on 29 May 2057, so now would be a good time to clear this date on your calendar.
When last we saw this little rascal, we were in master carpenter Bob’s workshop watching the glue dry on the clamped wooden cabinet.
Once the cabinet had been stained, I took it home and prepared to assemble it. I know this may sound silly, but when I’m cooking, I like to get all the ingredients chopped, prepared, and in their own bowls. Next, I put any dirty pots in the dishwasher and clean everything down. Finally, I’m ready to start on the dish in question.
Well, the same thing applies to my electronics projects. I don’t know why, but I find it satisfying to have everything laid out nice and neat before I jump into the fray.
I tell you; I’ve been waiting to pull the protective film off the top of my Lixie displays for longer than I care to remember. It’s also nice to see the brass accoutrements in place, especially the split brass plates surrounding the Lixies (see also “A Brazen Solution to Mounting Lixies“).
Speaking of the brass accoutrements, these little scamps were fabricated for me by my chums Andy and Mandy at Engraving Studios in the UK.
Of course, all of the above is just what is presented to the outside world, it’s what happens inside the beast that is the real magic. As a start, this required me to spend a happy weekend wiring everything up.
Unfortunately, nothing is simple. The way I’ve been joining wires for close to five decades is to twist them together, solder the joint, fold it over, and cover it with heat-shrink tubing (or insulating tape). I was halfway through my wiring when I ran across another way of doing things (see “Best Way to Twist Electric Wires Together“).
This was the first time I’ve been exposed to what I now know as the Western Union Splice, which — in addition to resulting in a cleaner, more aesthetically pleasing join — provides a mechanically sounder connection. I tell you… even though the wiring in my Counter Timer will experience negligible mechanical stress, I really had to fight the desire to remove all my wiring and start again (I was largely saved by the fact that I was running short on certain colors).
In addition to the 32 bit 180 MHz ARM Cortex-M4-based Teensy 3.6 processor (left hand side of image below) that performs all the calculations and drives the tri-colored LEDs in the Lixies, we also have a ChronoDot ultra-precise real-time clock (RTC) from Adafruit (middle of image below).
Also, on the right-hand side of the above image, we have one of Adafruit’s teeny-tiny Perma-Proto breadboards, which was the first breadboard I could find that would fit in the space that was available to me. Mounted on this board are three tactile switches that I can use to set the time and select alternative usage modes if I so desire. This board also boasts an LS118 3-channel switch de-bounce IC from LogiSwitch.net (I now use LogiSwitch 3-, 6-, and 9-channel de-bounce ICs in all my projects).
You can only imagine my delight when I powered everything up for the first time and saw the current date and time appear on the Countdown Timer.
From left-to-right we see the year (2019), the month (August), and the day. The next 19 represents 7:00 p.m. when this picture was taken, because by default my real-time library uses 24-hour mode. The next thing I’m going to do is tweak this in the software to display in 12-hour mode, because I think this will make more sense to the casual observer.
Do you remember my earlier column, “Scroll-back in Numeric Displays Improves Aesthetics,” in which I showed videos of cross-face and scroll-back effects applied to transitions on my Lixie displays? Well, sad to relate, I haven’t implemented these yet, but I do have this short video showing the Countdown Timer displaying the current time.
Another point to consider is that I’m going to be using the Countdown Timer to be displaying a number of different pieces of information. For example, in addition to the time remaining to my 100th birthday, it’s also going to display the amount of time with which I’ve graced this planet with my presence, and it would be silly to have something like this if we couldn’t use it to tell the current time.
The problem is that if we simply switch from displaying one value to presenting another, then blinking at the wrong time could mean we miss the transition. Of course, we can display each value using its own color, but it would be better to augment this with more interesting transition effects, some potential examples of which are shown in this video.
As I’ve mentioned before, you have to remember that I’m a hardware design engineer by trade, so I have to battle my way through the software, but I’m rather pleased by the fact that I’ve managed to create a single highly parameterized function that achieves all of the effects shown in the above video. If you are interested, you can take a look at my code by clicking here.
So, the real work is now poised to begin as I start to implement the different display modes and integrate the various transition effects. As always, I welcome your comments, questions, and suggestions.