This is only a preview of the June 2026 issue of Practical Electronics. You can view 0 of the 80 pages in the full issue. Articles in this series:
Articles in this series:
Items relevant to "SSB Shortwave Receiver, part two":
Articles in this series:
Articles in this series:
Articles in this series:
Articles in this series:
|
Max’s Cool Beans
By Max the Magnificent
Weird & Wonderful
Arduino Projects
Part 18: How did it get so late so soon?
I
was just cogitating on the new
Chronological Contraption project
we briefly introduced last month.
Although we are still a long way from
having to concern ourselves with the
container to house it, I want it to be
“a thing of beauty and a joy forever,”
as John Keats famously said in his
poem Endymion. As such, ideas have
started to percolate through my overworked noggin.
Whilst ruminating on this remit,
I was reminded of a previous Cunning Chronometer project that I presented in a six-sided case. I was more
than happy with how this turned out,
especially the back panel, which I
wanted to resemble an old-fashioned
radio set from the late 1920s and early
1930s. I flatter myself that I succeeded (Photo 1).
I’m particularly proud of the Morse
code message in the middle, which
reads, “How did it get so late so soon?”
This is a quote commonly attributed
to Dr. Seuss (Theodor Seuss Geisel).
Although it’s true that “beauty is
only skin deep”, and it may not functionally matter whether we craft a
nice case or simply plonk it in a cardboard box, I believe that it’s the little
details that matter when you are creating something to last. Even though
few people get to see this back panel,
I know it’s there, and those who do
really appreciate it.
That is the sort of thing I want to
incorporate into the cabinet for our
new Chronological Contraption.
“What was the rationale for the hexagonal interpretation of the Cunning
Chronometer?” I hear you muttering
to yourself. I’m glad you asked. When
I originally conceived this project, it
was part of a competition between a
few friends, with bonus points award-
Photo 1:
the back of
my Cunning
Chronometer.
42
ed for originality. I initially intended to add a nine-degrees-of-freedom
(9DOF) inertial measurement unit
(IMU) to the little scamp.
This remains the plan, but ironically, I don’t have a timeline for its
realisation.
Between IMU and me...
An IMU is an electronic device that
measures how something is moving
and how it’s orientated without requiring an external reference. At its core,
an IMU measures acceleration (the rate
of speeding up or slowing down) and
rotation (the rate of turning).
A basic IMU typically contains a
three-axis accelerometer that measures
translational (linear) motion along the
X, Y, and Z axes, plus a three-axis gyroscope that measures rotational (angular) motion around the same axes.
This would give us what’s referred
to as six degrees of freedom (6DOF),
because each axis of motion is independent (free) of the others.
This has nothing to do with the “six
degrees of Kevin Bacon”, although we
can’t rule out the possibility that he’s
distantly related to an IMU.
Some IMUs also boast a three-axis
magnetometer that measures the Earth’s
magnetic field, increasing the total degrees of freedom to nine, while providing some more heading information.
There are various cheap-and-cheerful IMUs on the market. Although it’s
a tad more expensive, my current favourite is the 9DOF Absolute Orientation IMU Fusion Breakout board from
Adafruit (#4272), shown in Photo 2.
This little wonder (https://pemag.au/
link/acbo [Amazon], acbp [Mouser],
acbq DigiKey) is based on the Bosch
BNO055 micro-electromechanical
system (MEMS) sensor, which also
includes a 32-bit microcontroller unit
(MCU) for sensor fusion.
Practical Electronics | June | 2026
Photo 2: a
9DOF
IMU.
Period (T)
Amplitude
Square
Peak-to-Peak
Amplitude
Triangle
The great thing about this Adafruit
module is that they’ve provided Arduino code examples that get you
up and running in a matter of minutes. When I eventually incorporate
this little beauty into my Cunning
Chronometer, I’ll be able to use it to
perform tricks, like rotating the case
and having the display automatically counter-rotate back to its regular
position.
I’ll also be able to lay the clock on
its back and have it turn into a compass. I’m sure that function will come
in handy one day!
The reason I’m waffling about all
this is that I’ve decided to add one
of these IMUs to my retro game console. We could use it for all sorts of
things, like controlling the serpent’s
direction in our snake game by tilting the console. We’ll do that in next
month’s column. But first...
Let there be noise!
As you may recall from last month’s
column, while I was playing the latest
and greatest version of our snake game,
I realised that there was something
missing: the tinny, quirky, ‘bleepy’
and ‘bloopy’, 8-bit Lo-Fi sounds one
associates with the game consoles of
yesteryear.
The more I thought about this, the
more I wanted to do it, so that’s what
we’re going to do right now. But before
we leap into the fray, we need to define
a few simple concepts.
‘Waveform’ refers to a graphical representation of how a signal changes
over time. The horizontal axis shows
time progressing from left to right,
while the vertical axis shows the signal’s amplitude (its magnitude at any
point in time; for sound, this maps
to loudspeaker movement). By looking at a waveform’s shape, we can
get a good idea of how the signal behaves and, in the case of audio, how
it will sound.
Some basic waveforms include the
square wave, triangle wave, sawtooth
wave and sine wave, all illustrated
in Fig.1. These are all examples of
periodic waveforms, meaning that
they repeat the same pattern over and
over.
Practical Electronics | June | 2026
Frequency f = 1/T
Sawtooth
Sine
Time
Fig.1: some fundamental waveforms.
The period (T) is the time taken for
one complete cycle of the waveform,
while the frequency, f, is the number
of cycles that occur each second. Both
are related by the delightfully simple
expression f = 1/T, which even my
poor old noggin can understand.
Frequency is measured in hertz
(cycles per second). The faster the
signal switches back and forth (the
higher its frequency), the higher the
pitch of the note we hear.
This is where things start to get
interesting. The reality in plain English is as follows. A square wave is
the simplest to generate, very ‘digital’
in character and rich in odd harmonics, making it raspy. A triangle wave
is smoother, still with only odd harmonics, and has much weaker higherfrequency components (I like to think
of its sound as ‘soupy’).
A sawtooth wave is brighter and
richer, containing both odd and even
harmonics; it’s in between a square
wave and triangle wave in sound. A
sine wave is a pure tone, consisting
of a single frequency with no harmonics, sounding smooth and a bit eerie
(ever heard a Theremin?).
This means that in terms of perceived smoothness and refinement,
we would order these waves as square
→ sawtooth → triangle → sine. However, if we were to consider things in
terms of harmonic complexity, then
the order would be sine → triangle →
square → sawtooth.
Perfectly pert piezos
There are several ways to generate sound for a project like our
retro game console, such as using
a small loudspeaker or a piezoelectric buzzer. A loudspeaker typically
requires additional drive circuitry,
whereas a piezo buzzer can be connected directly to the Arduino, so
that’s what we’ll use.
There are two main types of piezo
buzzer: active (the opinionated one)
and passive (the one we like). An
active piezo buzzer contains an internal oscillator circuit. These are often
presented as two-pin modules: +V
and GND. This is as simple as simple
can be. When we apply DC power, we
get a tone.
The downside is that we can typically generate only one fixed pitch
(eg, 2kHz), which makes it suitable
only for on/off beeping.
By comparison, a passive piezo
buzzer consists of just a piezoelectric
element, with no other components to
speak of. These may be presented as
three-pin modules: +V, GND and IO
(the signal input). To make a sound,
we need to apply a varying signal in
the form of a square wave to the IO
pin. A truly passive buzzer has just
two terminals and behaves like a capacitor that makes noise.
Either way, we can generate any
frequency we like (within reason),
enabling us to create clicks, chirps,
sweeps and other sound effects. The
passive piezo buzzer’s simplicity,
combined with its ability to generate a variety of tones under software
control, makes it an ideal choice for
our purposes. It doesn’t provide hi-fi
reproduction, but that isn’t what we
want, anyway!
In fact, we already introduced such
a device in June 2023 as part of our
43
Photo 3:
a passive
piezoelectric
buzzer
module.
lier). Eventually, we decided to bid a
sad farewell to A3, leaving us with A0,
A1, A2, A4, and A5 to play with.
But wait! We can’t use A0 because,
as we discussed last month, we are already using this pin to seed (initialise)
the Arduino’s pseudo-random number
generator (PRNG) with a suitably unpredictable value.
In my case, I decided to use A1. However, if I eventually decide to mount
my buzzer inside the console, I would
swap this to A3, thereby freeing up the
A1 pin on the 15-way connector.
that the listing number (1 in this case)
corresponds to the numerical part of
the matching code file name (“01”
here). Although we could have easily
implemented everything in the loop( )
function, it’s a better idea to split the
PlayClick( ) function out to facilitate
reuse in our snake program later.
We can call tone() in two ways. The
simplest form, tone(pin, frequency),
as seen on line 22, starts the tone and
lets it run continuously. This is the
approach we’re using. In this case, the
sound will continue until we explicitly
stop it using noTone(pin), as on line 28.
Alternatively, we could specify a duration (in milliseconds) using tone(pin,
frequency, duration). In this case, the
Arduino automatically stops the tone
after the specified time, which can be
convenient for short sound effects like
clicks and chirps.
Because all of this is handled ‘behind
the scenes’ using timers and interrupts,
the overhead is minimal, making tone()
an efficient way to add simple sound
effects to our projects.
Run this program to see what you
think. You might try varying the frequency and duration of your clicks, remembering that a typical passive piezo
buzzer works best in the 1-5kHz range.
Engineering onomatopoeia
Arduino Bootcamp series (Photo 3).
These little scamps are available from
multiple sources, including Amazon
(www.amazon.co.uk/dp/B07PRTMF89).
All we need to do is connect 0V
to the GND pin on the left, 5V to the
VCC pin on the right, and drive the
centre pin (marked IO) from one of
our Arduino Uno (or Nano) outputs.
Questions, questions…
The next question is: which Arduino
output do we use? In the case of our
game console, we can’t allocate any
of its digital pins because they’re already tied up elsewhere, so we’ll have
to turn to one of the analog pins (A0–
A5), bearing in mind that these can
also serve as digital input/outputs (I/
Os) if required.
To get things up and running quickly without committing myself more
than necessary, I mounted my buzzer
on a small board that I plugged into
the 15-way connector at the bottom
of my console. As you may recall, we
discussed my wiring scheme for this
connector in the February 2026 issue
(see Fig.2).
Although the Arduino Uno boasts
six analog pins, we could support only
five on this connector. We decided to
keep access to A4 and A5 in case we
decide to add any I2C-based sensors
later (like the IMU we discussed ear5V
0V
5V
0V
1
N
A1
2
A5
3
E
W
4
5
6
7
8
9
10 11 12 13 14 15
A0
A2
A4
Outside
the case
D3 D5 D7 D9
Inside
the case
D2 D4 D6 D8
R
44
S
Since we’re here, let’s briefly dip our
toes into the onomatopoeic engineering terminology waters. Onomatopoeia refers to words that imitate sounds,
like buzz, click, beep and bang.
We’ll start off with three basic sound
effects: a short, sharp “click” to keep
time with the snake’s slithering progress; a jaunty “chirp” when it snaffles a snack; and a suitably mournful
“wail” when it manages to collide with
something it really shouldn’t, thereby
meeting an untimely end.
The Arduino environment provides a
handy function called tone() that makes
generating simple sounds remarkably
easy. When we call this function, we
specify a pin and a frequency, and the Feeling chirpy
Arduino produces a square wave on
As uplifting as it is, we’re not talkthat pin at the requested frequency. ing about The Wiggles’ Feeling Chirpy
This will cause our piezo buzzer to song from their Top of the Tots album
vibrate and generate a sound.
and video. Rather, our next task is to
We know to our cost that changing emit a cheerful “chirp” sound when
too many things at once is problematic. our snake snaffles a snack.
So, as usual, we’ll take things step by
We can create such a sound by sweepstep. Let’s start by generating a “click” ing the frequency upward over a short
sound in isolation. I just created a quick period, using the code in the file named
test program in the file named
1 // Click sound test program
CB-jun26-code-01.txt (all files
2
mentioned in this column are
3 int buzzerPin = A1;
part of the June 2026 download
4
package from the PE website at
5 void setup()
6 {
https://pemag.au/link/acbm).
7
pinMode(buzzerPin, OUTPUT);
This code is shown in Listing
8 }
1(a). We’re using the convention
9
Y
G
B
Outside
the case
Fig.2: the wiring
on my 15-way
connector.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
void loop()
{
// Play click repeatedly for testing
PlayClick();
// Wait before repeating
delay(500); // Pause between clicks
}
void PlayClick ()
{
// Start tone at 2kHz
tone(buzzerPin, 2000);
// Wait a very short time
delay(5); // short, sharp click
// Turn tone off
noTone(buzzerPin);
}
Listing 1(a): our click sound test.
Practical Electronics | June | 2026
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Chirp sound test program
int buzzerPin = A1;
void setup()
{
pinMode(buzzerPin, OUTPUT);
}
void loop()
{
// Play chirp repeatedly for testing
PlayChirp();
// Wait before repeating
delay(1000); // Pause between chirps
}
void PlayChirp ()
{
// Sweep from low to high frequency
for (int freq = 1000; freq <= 3000; freq += 100)
{
tone(buzzerPin, freq);
delay(20); // Short delay for each step
}
// Turn tone off
noTone(buzzerPin);
}
Listing 2(a): our chirp sound test.
CB-jun26-code-02.txt. Although each
individual step is just a simple tone,
our ears blend them together into a
single rising sound that gives a pleasing sense of success.
Consider the PlayChirp( ) function
in Listing 2(a). In this case, we start at
1000Hz and climb to 3000Hz in 100Hz
steps, each lasting 20ms, resulting in a
short “wee-ooop!” style chirp.
Take this program for a spin, then
experiment by adjusting the chirp’s
character. For example, you can make
it faster and snappier by decreasing
the delay value to 10, or slower and
more expansive by increasing it to 30.
You can generate a higher-pitched
chirp by changing the loop control to
for (int freq = 1500; freq <= 4000; freq
+= 100). Alternatively, for a more cartoony effect, try using larger steps, such
as for (int freq = 1000; freq <= 3000;
freq += 200). And for a slightly more
polished version, reduce the delay to
15 and use for (int freq = 1200; freq <=
2800; freq += 50).
The moment of doom
So we find ourselves at the moment
when our brave little serpent comes to
a sticky end. This is where we get to
indulge in a “uh-oh…” sound effect.
To signal the snake’s untimely demise,
we simply reverse the process we used
in the “chirp”, sweeping the frequency downward (see the file named CBjun26-code-03.txt).
By stretching the timing slightly, we
can give the sound a more dramatic,
sinking quality—rather like the snake
realising, just a fraction too late, that
things have gone horribly wrong. ConPractical Electronics | June | 2026
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Doom-and-Gloom sound test program
int buzzerPin = A1;
void setup()
{
pinMode(buzzerPin, OUTPUT);
}
void loop()
{
// Play D&G repeatedly for testing
PlayDoomGloom();
// Wait before repeating
delay(1500); // Pause between D&G
}
void PlayDoomGloom ()
{
// Sweep from high to low frequency
for (int freq = 3000; freq >= 300; freq -= 100)
{
tone(buzzerPin, freq);
delay(30); // Increase for dramatic effect
}
// Turn tone off
noTone(buzzerPin);
}
Listing 3(a): the doom and gloom sound test.
sider the PlayDoomGloom() function or even 5ms each step? There’s only
in Listing 3(a).
one way to find out!
This time, we start at a bright, attention-grabbing 3000Hz and fall to about It’s music to my ears!
300Hz, which is as low as the buzzer
I just added our sound effects funcwill reasonably tolerate. We also use tions to the latest and greatest vera slightly longer delay of 30ms, which sion of our snake program, in the file
gives the effect a more ‘sinking’ feel. named CB-jun26-code-05.txt. I tell you,
The result is a classic “wahhh…” game- it’s amazing how much depth a little
over sound.
sound adds to the gaming experience.
Fire up this new version of our proWhat’s that, you say? You’d like some
gram and tickle your ears with its rueful homework? Well, I’m nothing if not
refrain. Try making some tweaks for obliging. How about you try to come
extra drama. For a faster panic drop, up with some effects of your own? Perdecrease the delay to 15; for a slower, haps a sound we could play when we
more mournful effect, increase the start the game or move to a new level.
delay to 40.
How about a sound for when we beat
Use bigger steps to achieve a more ‘8- our previous score? I’d love to hear
bit’ feel using for (int freq = 3000; freq what you come up with.
>= 300; freq -= 200). Since piezo buzzIf we decide to push things further
ers can get a bit sulky at low frequen- in the future, there’s a whole field of
cies, you can achieve a cleaner sound rabbit holes waiting for us, including
by not dropping too low, using for (int playing little tunes, multi-note effects
freq = 3000; freq >= 600; freq -= 100). and non-blocking sound routines. We
Last but not least, if you want some- could even have some background
thing a little more expressive and the- music as the snake slithers around!
atrical, you can try slowing the sound But honestly, what we have now is
as it falls, as in the file named
19 void PlayDoomGloom ()
CB-jun26-code-04.txt.
This requires just a small 20 {
int delayTime = 20;
tweak to our PlayDoom- 21
22
Gloom( ) function, as illus- 23
// Sweep from high to low frequency
trated in Listing 4(a). As you’ll 24
for (int freq = 3000; freq >= 300; freq -= 100)
{
see (well, hear), this gives it a 25
26
tone(buzzerPin, freq);
distinct “oh no… oh no… oh
27
delay(delayTime);
no…” quality as it tails off.
28
delayTime +=2; // Gladually slow down
In this case, we commence 29
}
with a 20ms delay between 30
// Turn tone off
steps, increasing it by 2ms 31
noTone(buzzerPin);
for each step. Do you wonder 32
33 }
what it would sound like if
we increased it by 3ms, 4ms, Listing 4(a): doomier and gloomier.
45
exactly right for our retro game aesthetic.
Tick-tock
Let’s get back to our new Chronological Contraption project. As discussed last month, this is intended to
mark the years, months, days, hours,
minutes, and seconds until the start
of my 100th birthday celebrations,
but you can use it for anything you
want (it could even act as a clock at
a pinch).
We could implement this using any
form of display, such as the 7-segment
light-emitting diode (LED) displays
we’re using on the retro game console.
However, I decided to use Soviet-era
vacuum fluorescent displays (VFDs),
similar to the one shown in Photo 4.
A VFD is essentially a vacuum tube
containing phosphor-coated segments.
Different combinations of segments can
be activated to form numbers. They
come in all sorts of shapes, sizes and
form factors (this is true of both the
tubes and their segments).
In our case, we’re using the IV-11
type, which is conceptually similar
to our 7-segment displays, including
a decimal point segment. These IV-11
tubes are readily available as surplus
NOS (new old stock) parts from hobby
electronics sellers and on eBay.
There are several reasons we chose
VFDs, starting with their bright, crisp
and easy-to-read display, which offers
excellent visibility, a wide viewing
angle and fast response times. They
also have that wonderful ‘retro glow’
that’s hard to describe and impossible to resist.
Compared to Nixie tubes (for which
I also have a great fondness), VFDs are
less expensive and operate at far lower
voltages (around 20–30V instead of
the 170–200V demanded by Nixies),
making them a lot easier to drive. We
will delve deeper into VFD technology
next month (these really are awesome
little devices) but we currently have
other fish to fry.
Photo 4:
a vacuum
fluorescent
display (VFD)
inside a glass
tube. Source:
https://
displaytubes.org/
vfd/reflectoriv-12/
46
Fig.3: the layout of the main PCB; top side (left) and bottom side (right).
How many digits?
Since this is a pet project, I’ve decided to go all-out, using 14 tubes to
display years, months, days, hours,
minutes and seconds in a YYYYMMDD hhmmss format.
Of course, you could always use
fewer tubes. For example, you might
reduce the year to a two-digit YY
format, implicitly assuming the most
significant digits are 20.
There are all sorts of tricks we
could play here, such as using only
six digits to alternate between displaying YYMMDD and hhmmss.
Following this train of thought, we
could use only two digits to switch
between displaying YY, MM, DD, hh,
mm and ss. Still, that may be a little
confusing.
A cunning plan
As usual, my ‘partner in crime’ on
this project is my friend Joe Farr. It’s
great to have someone to bounce ideas
off. It’s also great to have someone to
blame if things go pear-shaped, although, to be honest, that’s more of a
benefit to Joe than me.
To accommodate readers who want
to build Chronological Contraptions of
various sizes, Joe and I came up with a
cunning plan worthy of Baldrick. The
idea is to have a small printed circuit
board (PCB) for each tube, with connectors that let them plug together to
form chains of different lengths.
The topside and underside of this
board, which Joe and I typically refer
to as the “main” board, are illustrated
in Fig.3. Don’t worry about the nittygritty details at the moment; we’ll look
into this in more depth next month. All
we need to do now is wrap our brains
around a few high-level details.
Let’s start with the fact that the signal
path goes from left to right. At the top
of the board, we have two 2×10 (20way) right-angle PCB connectors. The
input connector on the left is a male
plug, while the output connector on
the right is a female socket.
The reason we decided to do things
this way (rather than go with the socket
on the left and the plug on the right)
is to prevent potential problems with
exposed plug pins (for once, we were
thinking ahead). At the bottom of the
board, we find our 11-pin VFD tube
(we’ll talk about what all these pins
do later).
In the middle of the board, we have
two integrated circuits (ICs) along with
a single inline (SIL) resistor network.
We opted to use through-hole (TH)
components rather than their surfacemount device (SMD) counterparts to
make it easy for anyone to build these.
Once again, we’ll talk about all these
components in more detail later.
For now, we need only note that the
16-pin IC closest to the connectors is a
trusty 74HC595 serial-in, parallel-out
(SIPO) shift register. We’ve used it in
several projects to date. The 18-pin
IC snuggled up to the tube is the ULN2803A, which acts as a buffer/driver,
allowing the 5V logic signals from the
‘595 to control the higher-voltage (~25V)
signals required by the VFD.
Only the VFD tube is mounted on
top of the board; all other components,
including the connectors and capacitors, are on the underside. Note that the
image of the underside of the PCB, as
shown on the right in Fig.3, represents the view as if we were looking
through the board; hence the reversed
text. We’d see a mirror-image of that if
we physically flipped the board over.
Let there be LEDs!
I can almost see a frown furrowing
Practical Electronics | June | 2026
SRCLK
ORCLK
ORCLK
DATA_IN
SR = Shift register
OR = Output register
CLK = Clock
DATA_OUT
To next digit
From MCU or
previous digit
SRCLK
74HC595
ULN2803A
VFD Tube
Observer
Fig.4: a high-level view of the functional flow.
your forehead, thinking: “VFD tubes
are all well and good, but is life really
worth living if tricolour LEDs aren’t
involved?” Fear not—we have you
covered. We’re going to pair a 5050
package (5 × 5mm) tricolour NeoPixel
with each VFD.
Initially, we had planned to mount
the NeoPixel on top of the board, directly beneath the tube. But experience
has taught us to allow for the need to
rework things if necessary. It would
be somewhat embarrassing, frustrating, and time-consuming if a NeoPixel failed, and we had to go to all the
effort of desoldering the 11-pin VFD
just to replace it.
Our solution is even more cunning.
In Fig.3, you’ll see a small rectangular
cutout directly beneath the tube. This
allows us to place the board face down,
drop the NeoPixel (also face down) into
the opening and spot-solder its terminals to pads on the underside of the
board. This means we can replace the
NeoPixel in the future, should that be
necessary, without removing the tube.
(OR), which presents values to the
outside world.
The SRCLK (shift register clock)
signal loads the 0 or 1 value on DATA_
IN into the shift register. Whatever
8-bit value is currently in the register
shifts one bit to the right (where right
is relative to the illustration in Fig.4).
If multiple digits (boards) are daisychained together, the DATA_OUT from
this board feeds into the DATA_IN of
the next board in the chain.
Once all the bits in the shift register
chain have been loaded, the ORCLK
(output register clock, sometimes
called latch clock) signal is used to
copy the contents of shift registers
into the output registers, at which
point they become visible to the outside world.
I use the term ‘MCU’ (microcontroller unit) in Fig. 4 rather than Arduino because our daisy-chain of
boards can be driven by pretty much
any microcontroller. We will be using
an Arduino here, but Joe has opted to
use a PIC microcontroller for his implementation.
I need some space!
If we were to simply connect 14 of
these boards together to display my
YYYYMMDDhhmmss values in one big
‘chunk’ (not wishing to be too technical), the result would be less than userfriendly. We need to space things out
a little to look more like YYYY_MM_
DD__hh_mm_ss.
Rather than using ribbon cables or
similar connectors to connect groups
of digits, we decided to create a special spacer board, illustrated in Fig.5.
At first glance, this board may appear
to have nothing more than the two
plug-and-socket connectors (boring).
However, if you look closer, you’ll
see a small rectangular cutout at the
bottom of the board (exciting). This,
of course, means that we will also be
flaunting a tricolour NeoPixel on each
of our spacer boards.
In turn, these pixels will allow us
to implement separator characters between groups of digits, such as colons
between the hh:mm:ss time fields. Thus,
we don’t actually need a double space
A high-level view
Focusing on the VFD portion, a highlevel view of the functional flow is
shown in Fig.4. This is not a proper
circuit diagram; it’s simply an abstract
representation to give us a first-pass
feel for how the main elements of the
shift register chain and the data flow
operate.
As we know from previous experiments, ‘595 shift registers actually contain two 8-bit registers: the shift register (SR) itself and the output register
Practical Electronics | June | 2026
Fig.5: the layout of the spacer PCB; top side (left) and bottom side (right).
47
Photo 5: a first prototype of the Chronological Contraption by Joe Farr.
between the YYYY_MM_DD and the
hh_mm_ss fields (although we could,
if we wished, using two spacer boards)
because we can simply leave this particular pixel off.
Joe already has an early prototype
of the Cunning Chronometer up and
running (I only just received my PCBs
back from the fabrication facility). As
seen in Photo 5, Joe’s VFDs are fluorescent green, while the NeoPixels
beneath his tubes are currently set to
glow magenta.
Joe is using laser-cut, laser-etched
acetate strips as separators, with the
NeoPixels beneath them set to glow
blue. Sad to relate, this didn’t turn out
quite as well as we’d envisaged, but
we have more tricks up our sleeves
(did you ever doubt us?) and we’ll be
experimenting with some tastier ways
to do this in a future column.
Gabbing about Gerbers
The main way we convey information to a PCB manufacturing facility
is via a file format known as Gerber,
created by an extraordinary individual
named H. Joseph Gerber.
There’s a biographical book titled
The Inventor’s Dilemma: The Remarkable Life of H. Joseph Gerber (amazon.
com/dp/0300123507), written by his
son, David J. Gerber. As far as I’m concerned, this gripping tale falls squarely
into the ‘must-read’ category.
Joseph became one of America’s
great inventors. Along the way, he
revolutionised a variety of antiquated
industries and created entirely new
ones, including the digital plotters
that transformed the way PCBs were
manufactured.
These days, when we want to create
something new, we can draw on a vast
pool of existing infrastructure. Take
the Arduino system, for example. If
you want to use it to drive motors,
there’s a shield for that. If you want
to connect your Uno to the internet
via Wi-Fi, there’s a shield for that,
too. More importantly, someone else
has already invented Wi-Fi… and the
internet… for you.
48
This simply wasn’t the case in Joseph’s day; there was little in the way
of infrastructure for him to rely on. As
part of developing his digital plotters,
he also had to define the file format
for describing the plot data. Thus, the
Gerber format was born.
Back to our boards
We’ve been through several iterations of these boards; we started out
using IV-6 tubes, but they turned out to
be too wimpy for our purposes. I still
have a box of the little rascals sitting
on the desk next to me in my office,
making me feel guilty.
Joe has kindly made the Gerbers
for the latest-and-greatest IV-11-based
boards available to the rest of us (in a
file named CB-jun26-CC-gerbers.zip).
In addition to other files, this contains two more ZIP files: Clock_IV11_
V3.2_gerber.zip for the main board and
Clock_Spacer_V3.2_gerber.zip for the
spacer board. You can simply upload
these ZIP files to the PCB fabricator of
your choice.
We’ll also make these boards available from our website shop located at
www.electronpublishing.com if you
want to take the easy route.
I currently hang my hat in the USA,
living amid a tumult of tariff turbulence
that can transition day by day. While
I have an honest desire
to “buy locally”, all the
quotes I got from domestic PCB manufacturers
made my eyes water.
When I was informed
my small order would
be well over $300 (£225),
I soon found myself on
the PCBWay website
(www.pcbway.com).
This is one of the
best-known low-cost
PCB fabrication and assembly services used
by hobbyists, startups
and even some professional engineers.
They also support this publication, for
which we are grateful!
This was the first time I’ve worked
with these folks, and I have to say that
I am very impressed. I uploaded the
ZIP file containing the Gerbers for the
main board and selected 20 boards
(14 for starters and six spares ‘just in
case’). The cost of these boards was
only $21.81 (£16.50), which works out
to just a tad over a dollar (~£0.83) per
board. Now, that’s more like it!
We should probably note that five
boards is the minimum order quantity on PCBWay, but even if you need
only one, think about this: one is for
testing, one is for ‘oops’, one is for
modifications, with two spares (or
for friends).
Next, I uploaded the ZIP file containing the Gerbers for the spacer board
and selected 10 boards (five for starters and five for spares). I know these
are smaller and simpler than the main
board, but I was still surprised to see a
price of $5 (~£3.80) for all 10 boards,
which even my poor mathematical
skills tell me works out to only $0.50
(~£0.38) a board.
The total came to $26.81 for all the
boards (about £20), which brought a
cheesy smile to my chubby cheeks.
Even after adding $27.27 for shipping
I still have no idea
why they call me
"Mad Max"!
Devices and components used in this issue
Passive piezo buzzer module
https://pemag.au/link/acbn
Practical Electronics | June | 2026
and $22.47 for assorted extras (bank
fees, duties, taxes and tariffs), I was
more than happy with the grand total—
still only around $2.50 (£1.90) per
board.
Just a couple of weeks later, I had
my Cunning Chronometer boards in
my eager hands, and they look awesome (happiest of happy dances). We
will move on to consider the other
components next month, but first…
ning Chronometer I wanted to share
with you. When the count reaches
zero (well, 0000 00 00 00 00 00)—at
11:45am British Summer Time (BST),
thereby marking the 100th anniversary of my arrival on this planet—the
Cunning Chronometer will burst into
a veritable cornucopia of exuberant
sound effects.
I’m thinking a carillon pealing forth
in exultation would make a rather
nice touch.
I mentioned my belief that my Cunning Chronometer is destined to become
a treasured family keepsake. Thus,
even if I’m not there to witness the
completion of the countdown myself (I
may be off canoeing up the Amazon or
something of that ilk), my son Joseph
and his family can gather round to tell
each other tall tales of the magnificence
that is Max.
Of course, this may start to wear a
little on the nerves after the first couple
Ask not for whom…
The phrase “for whom the bell tolls”
originates from a 1624 meditation by
John Donne, who wrote, “never send
to know for whom the bell tolls; it tolls
for thee”. Ernest Hemingway later borrowed the line as the title of his 1940
novel For Whom the Bell Tolls, helping to popularise the form of the saying
that most people quote today.
I’m mentioning this here because I’ve
just remembered one facet of the Cun-
of hours, at which point I expect someone to (reluctantly) unplug the unit
from the wall. Unfortunately (for them),
they will be blissfully unaware of the
ultra-top-secret backup power supply
embedded within the device.
I think it would be a nice touch if
the sound of the bells tolling were to
return around 3:00am. the following
morning, at which point we will all
know “for whom the bell tolls”.
Next time
We will commence our next column
by adding a 9DOF IMU to our retro
game console. Next, we will delve
deeper into VFD technology, consider the components required to implement the Cunning Chronometer, and
start assembling its boards.
As always, if you have any thoughts
you’d care to share on anything you’ve
read here, please feel free to email me
PE
at max<at>clivemaxfield.com
ETI BUNDLE (1) Teach-In 3, 4 and 5 – all on CD-ROM – only £18.95
ELECTRONICS TEACH-IN 3 – CD-ROM
ELECTRONICS
TEACH-IN 3
EE M
FR -RO
CD
Mike & Richard Tooley
The three sections of the Teach-In 3 CD-ROM cover a
huge range of subjects that will interest everyone involved
in electronics – from newcomers to the hobby and
students to experienced constructors and professionals.
£7.99
FROM THE PUBLISHERS OF
i The how and why of circuit design
PRACTICALLY SPEAKING
i The techniques of electronic
project construction
INGENUITY UNLIMITED
The first section (80 pages) is dedicated to Circuit
Surgery, EPE/PE’s regular clinic dealing with readers’
TeachFREE
In
nics
queries on circuit design problems – from voltage
TEACH-IN 1 CD-ROM
ro
TWO TEACH-INs FOR
regulation to using SPICE circuit simulation software.
THE PRICE OF ONE!
The second section – Practically Speaking –
covers hands-on aspects of electronics construction.
Again, a whole range of subjects, from soldering to
avoiding problems with static electricity and identifying
components is covered. Finally, our collection of
Ingenuity Unlimited circuits provides over 40 circuit designs submitted by readers.
The CD-ROM also contains the complete Electronics Teach-In 1 book, which
provides a broad-based introduction to electronics in PDF form, plus interactive
quizzes to test your knowledge and TINA circuit simulation software (a limited
version – plus a specially written TINA Tutorial). Teach-In 1 covers everything
from electric current through to microprocessors and microcontrollers, and each part
includes demonstration circuits to build on breadboards or to simulate on your PC.
©
blishing Ltd 20
10
1
Elec
t
i Over 40 different circuit ideas
W
i The free CD-ROM provides
a broad-based introduction
to electronics
n Program
Simulatio
Circuit d version)
(Limite
ramming
PIC Prog n)
CODE V3
d versio
8 FLOW
(Limite
Software Quizzes to Test
active
ledge
8 Inter
Your Know
8 TINA
i A complete stand-alone
tutorial in 11 parts plus free
software
Teach In 3 Cover.indd 1
10 13:21:42
29/04/20
dd 1
Mike & Richard Tooley
The Teach-In 4 CD-ROM covers three of the most
important electronics units that are currently studied in
many schools and colleges. These include, Edexcel
BTEC level 2 awards and the electronics units of the
Diploma in Engineering, Level 2.
The CD-ROM also contains the full Modern
Electronics Manual, worth £29.95. The Manual
contains over 800 pages of electronics theory,
projects, data, assembly instructions and web links.
It's an ideal way to learn about electronics.
ELECTRONICS
TEACH-IN 4
EE M
FR -RO
CD
£8.99
FROM THE PUBLISHERS OF
A BROAD-BASED
INTRODuCTION TO ELECTRONICS
FREE
CD-RO
M
WORT
H
£29.9
5
i An eleven part tutorial
i uses inexpensive circuit
simulation software
FREE M
CD-RO
THE MODERN ELECTRONICS MANuAL
The essential reference
work for everyone
studying electronics
i Over 800 PDF pages
i In-depth theory
autorun,
should
This software
in Windows
if not, open double-click
and
f
Explorer
index.pd
requires
This CD-ROM
Reader™
from
Adobe®
dable Free
Downloa
be.com
www.ado
UAL
MAN.co.u
k
BA SE .epe
mag
www
© Wimbor
Teach In 4 Cover.indd 1
Practical Electronics | June | 2026
The projects are: n Moisture Detector n Quiz
Machine n Battery Voltage Checker n SolarPowered Charger n Versatile Theft Alarm
n Spooky Circuits n Frost Alarm n Mini Christmas
Lights n iPod Speaker n Logic Probe n DC Motor
Controller n Egg Timer n Signal Injector Probe
n Simple Radio Receiver n Temperature Alarm.
ne Publishi
ng Ltd.
i Extensive data tables
and web links
£8.99
JUMP START
15 design and build circuit projects
dedicated to newcomers or those
following courses in schools and
colleges
PRACTICALLY SPEAKING
The techniques of project construction
PIC ‘N MIx
Starting out with PIC microcontrollers
FREE M
CD-RO
TEACH-IN 2
cal
a practi
Provides
to PIC
introduction llers
microcontro
ws
for Windo
CD ROM
start
should
This CD
y, if not
automaticallindex.html
double-click
TWO TEACH-INs FOR
THE PRICE OF ONE !
Plus:
nika,
MikroElektro
Microchip pe
L-Tek PoSco
software
The free CD-ROM provides a
practical introduction to PIC
microcontrollers
Plus MikroElektronika,
Microchip and L-Tek PoScope
software
In 2
TeachLtd
nicsorne
dsPIC are
Publishing
PIC and
rated
Ele©ctro
MPLAB, logy Incorpo ogy
2013 Wimb
and logo,
Techno
Technol
ip
ip name of Microchip
Microch
.09
arks
016-02
The Microch
s. © 2013
ed tradem
countrie
1. MCCD1
register
d. Issue
and other
in the USAAll rights reserve
Inc.
PLUS
3 09:59:25
29/07/201
d 1
06/05/2010 16:22:29
CD Cover.in
ELECTRONICS TEACH-IN 4 – CD-ROM, A
BROAD INTRODUCTION TO ELECTRONICS
Mike & Richard Tooley
ELECTRONICS
TEACH-IN 5
EE M
FR -RO
CD
FROM THE PUBLISHERS OF
15 design and build circuit projects for newcomers
or those following courses in school and colleges.
CIRCUIT SURGERY
Pu
rne
bo
im
ELECTRONICS TEACH-IN 5 – CD-ROM
JUMP START
Teach
In 2 - JUL13.ind
Teach In 5 Cover.indd 1
29/07/2013 10:00:29
PIC’n’ Mix – starting out with the popular range of
PIC microcontrollers and Practically Speaking – tips and techniques for project construction.
The CD-ROM also contains:
n Complete Teach-In 2 book, a practical introduction to PIC microprocessors
n MikroElektronika, Microchip and L-Tek PoScope software.
Three Teach-ins for the great price of
£18.95
PLUS you also get the contents of the
free CD-ROM from each issue...
... so that’s another TWO Teach-Ins and
The Full Modern Electronics Manual!
2011
14/11/2011 20:33:21
49
|