Silicon ChipMax’s Cool Beans - June 2024 SILICON CHIP
  1. Contents
  2. Subscriptions
  3. Back Issues
  4. Publisher's Letter: Test your speakers!
  5. Feature: Techno Talk - Program that! by Max the Magnificent
  6. Feature: Net Work by Alan Winstanley
  7. Project: Wi-Fi Time Source for GPS Clocks by Tim Blythman
  8. Feature: Heart Rate Sensor Module by Jim Rowe
  9. Project: Loudspeaker Test Jig by Phil Prosser
  10. Feature: Setting up and using Room EQ Wizard by Phil Prosser
  11. Feature: Teach-In 2024 – Learn electronics with the ESP32 by Mike Tooley
  12. Feature: Max’s Cool Beans by Max the Magnificent
  13. Feature: Audio Out by Jake Rothman
  14. Feature: Circuit Surgery by Ian Bell
  15. PartShop
  16. Market Centre
  17. Contents
  18. Back Issues: Peak Test Instruments

This is only a preview of the June 2024 issue of Practical Electronics.

You can view 0 of the 72 pages in the full issue.

Articles in this series:
  • (November 2020)
  • Techno Talk (December 2020)
  • Techno Talk (January 2021)
  • Techno Talk (February 2021)
  • Techno Talk (March 2021)
  • Techno Talk (April 2021)
  • Techno Talk (May 2021)
  • Techno Talk (June 2021)
  • Techno Talk (July 2021)
  • Techno Talk (August 2021)
  • Techno Talk (September 2021)
  • Techno Talk (October 2021)
  • Techno Talk (November 2021)
  • Techno Talk (December 2021)
  • Communing with nature (January 2022)
  • Should we be worried? (February 2022)
  • How resilient is your lifeline? (March 2022)
  • Go eco, get ethical! (April 2022)
  • From nano to bio (May 2022)
  • Positivity follows the gloom (June 2022)
  • Mixed menu (July 2022)
  • Time for a total rethink? (August 2022)
  • What’s in a name? (September 2022)
  • Forget leaves on the line! (October 2022)
  • Giant Boost for Batteries (December 2022)
  • Raudive Voices Revisited (January 2023)
  • A thousand words (February 2023)
  • It’s handover time (March 2023)
  • AI, Robots, Horticulture and Agriculture (April 2023)
  • Prophecy can be perplexing (May 2023)
  • Technology comes in different shapes and sizes (June 2023)
  • AI and robots – what could possibly go wrong? (July 2023)
  • How long until we’re all out of work? (August 2023)
  • We both have truths, are mine the same as yours? (September 2023)
  • Holy Spheres, Batman! (October 2023)
  • Where’s my pneumatic car? (November 2023)
  • Good grief! (December 2023)
  • Cheeky chiplets (January 2024)
  • Cheeky chiplets (February 2024)
  • The Wibbly-Wobbly World of Quantum (March 2024)
  • Techno Talk - Wait! What? Really? (April 2024)
  • Techno Talk - One step closer to a dystopian abyss? (May 2024)
  • Techno Talk - Program that! (June 2024)
  • Techno Talk (July 2024)
  • Techno Talk - That makes so much sense! (August 2024)
  • Techno Talk - I don’t want to be a Norbert... (September 2024)
  • Techno Talk - Sticking the landing (October 2024)
  • Techno Talk (November 2024)
  • Techno Talk (December 2024)
  • Techno Talk (January 2025)
  • Techno Talk (February 2025)
  • Techno Talk (March 2025)
  • Techno Talk (April 2025)
  • Techno Talk (May 2025)
  • Techno Talk (June 2025)
Articles in this series:
  • Win a Microchip Explorer 8 Development Kit (April 2024)
  • Net Work (May 2024)
  • Net Work (June 2024)
  • Net Work (July 2024)
  • Net Work (August 2024)
  • Net Work (September 2024)
  • Net Work (October 2024)
  • Net Work (November 2024)
  • Net Work (December 2024)
  • Net Work (January 2025)
  • Net Work (February 2025)
  • Net Work (March 2025)
  • Net Work (April 2025)
Articles in this series:
  • Teach-In 2024 (April 2024)
  • Teach-In 2024 (May 2024)
  • Teach-In 2024 – Learn electronics with the ESP32 (June 2024)
  • Teach-In 2024 – Learn electronics with the ESP32 (July 2024)
  • Teach-In 2024 – Learn electronics with the ESP32 (August 2024)
  • Teach-In 2024 – Learn electronics with the ESP32 (September 2024)
  • Teach-In 2024 – Learn electronics with the ESP32 (October 2024)
  • Teach-In 2024 – Learn electronics with the ESP32 (November 2024)
Articles in this series:
  • Max’s Cool Beans (April 2024)
  • Max’s Cool Beans (May 2024)
  • Max’s Cool Beans (June 2024)
  • Max’s Cool Beans (July 2024)
  • Max’s Cool Beans (August 2024)
  • Max’s Cool Beans (September 2024)
  • Max’s Cool Beans (October 2024)
  • Max’s Cool Beans (November 2024)
  • Max’s Cool Beans (December 2024)
Articles in this series:
  • Audio Out (January 2024)
  • Audio Out (February 2024)
  • AUDIO OUT (April 2024)
  • Audio Out (May 2024)
  • Audio Out (June 2024)
  • Audio Out (July 2024)
  • Audio Out (August 2024)
  • Audio Out (September 2024)
  • Audio Out (October 2024)
  • Audio Out (March 2025)
  • Audio Out (April 2025)
  • Audio Out (May 2025)
  • Audio Out (June 2025)
Articles in this series:
  • Circuit Surgery (April 2024)
  • STEWART OF READING (April 2024)
  • Circuit Surgery (May 2024)
  • Circuit Surgery (June 2024)
  • Circuit Surgery (July 2024)
  • Circuit Surgery (August 2024)
  • Circuit Surgery (September 2024)
  • Circuit Surgery (October 2024)
  • Circuit Surgery (November 2024)
  • Circuit Surgery (December 2024)
  • Circuit Surgery (January 2025)
  • Circuit Surgery (February 2025)
  • Circuit Surgery (March 2025)
  • Circuit Surgery (April 2025)
  • Circuit Surgery (May 2025)
  • Circuit Surgery (June 2025)
Max’s Cool Beans By Max the Magnificent Arduino Bootcamp – Part 18 O -M-Goodness gracious me. My head is buzzing with so many ideas that I don’t know whether I’m coming or going. I have myriad topics I want to waffle about, but where to start waffling? More power! I’ve said it before, and I’ll say it again – one of the great things about electronics is that there’s always more than one way to do something. I’ve said it before, and I’ll say it again (did someone just say that or is it déjà vu all over again?) – one of the pains with electronics is that there’s usually so many ways of doing things that it can be hard to know what to do for the best. Sometimes your best bet is to flip a coin and allow fate to decide your course. Over the course of this series, we’ve developed a way of powering our breadboards that involves using two light-emitting diodes (LEDs) to provide us with a high level of confidence that our power and ground rails are intact and working as expected. I’m not going to rehash everything we’ve done in excruciating detail now (I’ll save that for later). What I will do is say that you can remind yourself of our current setup by downloading an image of the latest and greatest incarnation of our dual breadboard platform (file CB-Jun24-01.pdf). As usual, all the files mentioned in this column are available from the June 2024 page of the PE website: https://bit.ly/pe-downloads I’ve made mention of my friend Joe Farr on multiple occasions. Joe has a vast amount of practical knowledge. I learn something new whenever I chat Fig.1. Long-tailed 0.1-inch pitch header pins. 52 with him. For example, while he was helping me debug the wiring issue we discussed in our previous column (PE, May 2024), Joe idly dropped into the conversation the fact that he usually powers his breadboards using a different scheme to the one we’ve adopted. We will look at this scheme in a moment, but – before we go there – Joe also mentioned that if he ever needs to perform some breadboard-related activity more than one time, he usually creates a breakout board (BOB) or something similar. He then makes a bunch of these and pops them in a drawer for later use. Another trick Joe employs is to put a label on the front of the drawer saying what’s inside. I’m reminded of the ‘Brilliant!’ adverts from Guinness – see: https://bit.ly/3VDE0yt I’m sure you are muttering, ‘That’s obvious,’ to yourself under your breath. Well, that’s as maybe, but it’s amazing how many of us – your humble narrator included – are convinced we will always remember where we put things, only to discover that we are deluding ourselves when the time comes. In the case of any LEDs used to verify the presence of power on his breadboards, Joe mounts them and their associated current-limiting resistors on a pair of 0.1-inch-pitch header pins. You can purchase these pins in strips and then snip off the number you need. The ones we need here are long tailed on both sides (Fig.1). The conducting terminals are 6.25mm on each side with 2.5mm of plastic in the middle, so 15mm in all. You can find them all over the place, including Amazon, see: https://bit.ly/3U1Vp2z Joe always associates the currentlimiting resistor with the LED’s anode terminal, thereby making it easy to remember what’s what when plugging them into the power and ground rails. I’ve replicated Joe’s scheme with the green and blue LEDs we’ve been using, along with their 680Ω (blue-grey-brown) current-limiting resistors (Fig.2). Since we know all the experiments in this series are based on the 5V supplied by our Arduino Uno, we need do no more. In Joe’s case, as his projects often include Top view a Side view k a = anode k = cathode a k Soldered joints 0.1-inch pitch header pin pair Fig.2. Constructing LED assemblies. a mix of +12V and –12V for the analogue portions of his circuits, along with +5V and +3.3V for the digital sections, he uses different coloured LEDs (and different values of current-limiting resistors) for each voltage. It’s a bit ironic that – although we are working with solderless breadboards – we find ourselves needing to do a bit of soldering, but ‘it’s a funny old world and no mistake,’ as they say (we talked about soldering, along with Alan Winstanley’s handy-dandy Basic Soldering Handbook, in PE, March 2024). Now let’s turn our attention to our spiffy new power plan (Fig.3). Remember that I always prefer to have my breadboards oriented such that the red power rail is at the top (always doing things the same way helps cut down on errors involving mistakenly connecting things to the wrong rails). In all these examples, we’re bringing 5V (red wire) and 0V (black wire) from the Arduino into the bottom righthand corner of the breadboard. Also, we’re including jumpers in the middle of the power and ground rails just in case we happen to find ourselves working with a split-rail board. The way we’ve been doing things thus far is illustrated in Fig.3a. In this case, we link the bottom and top sets of power and ground rails using the red and black wires on the left-hand side of the board. By locating our green and blue LEDs on the right-hand side of the board, we verify that all the rails are intact. As I know from experience, it’s very frustrating to spend time debugging a non-existent problem, only to discover that one’s breadboard isn’t fully powered up in the way one thinks it is. Practical Electronics | June | 2024 Connection No connection D3 Ground (0V) D2 D0 D1 Display segments and pin numbers 5 10 9 1 2 4 6 7 DP G F E D C B A (a) Original scheme From Arduino B 3 3 3 3 C C C C B E 13 B E 12 B E 11 E 10 9 8 7 6 5 4 3 2 Arduino pin numbers Fig.4. Upping our game to use four 7-segment displays. to refresh our minds as to the concept of binary-coded decimal From (BCD), after which we were to (b) One alternative Arduino investigate various deployments of BCD-to-7-segment decoders in our clock prototype. I’m afraid I fibbed. I hang my head in shame. I shall chastise myself soundly later. The problem is that I can’t hold myself back any longer. When we were all a lot younger than we are today, we commenced our Arduino Bootcamp experiments From (c) Better alternative using only a single 7-segment Arduino display. I’m sure that you, like me, look back on those halcyon Fig.3. Alternative power scenarios. days with fond nostalgia. More recently (PE, May 2024), we Now that we have our snappy new upped our game to use a dual-display LED assemblies from Fig.2, one possible configuration, pushing ourselves to scenario is to use one of these assemblies ‘Boldly go,’ as Captain James Tiberius as illustrated in Fig.3b. By placing this Kirk might say. single LED assembly in the upper rightAnd now? Well, as the eponymous hand corner of the board, we again verify character in Dirk Gently’s Holistic that all the rails are intact. Detective Agency once proclaimed: A final alternative is to add additional ‘Let’s think the unthinkable. Let’s do red and black wires to link the bottom and the undoable. Let us prepare to grapple top set of power and ground rails on the with the ineffable itself and see if we may right-hand side of the board (Fig.3c). This not eff it after all.’ Yes, you are correct, redundancy provides increased reliability it’s time for us to tentatively dip our toes on the off chance that one of our wires into the quad-display waters. becomes disconnected or one of our rails From a hardware perspective, this is goes open circuit for some reason. We really simply an extension of what we’ve done require only one LED assembly, but I’ve before. We already had two 7-segment used two (one either side of the jumpers displays that we called D0 and D1. We’re in the middle of the upper rails) because… going to add two more that we’ll call D2 well, (a) they are different colours and (b) and D3 (Fig.4). Similarly, we were already two LEDs are inherently more fun than one. using eight of the digital outputs (pins 2 Of course, we don’t have to change our through 9) on our Arduino Uno to drive existing setup now. This is just something eight 150Ω current-limiting resistors. The for us to remember for future projects. other sides of the resistors were connected Having said that, I’ve gone ahead and to the anode (segment) terminals on modified our master diagram anyway displays D0 and D1, so we need to extend (file CB-Jun24-02.pdf). these wires to also drive displays D2 and D3. Finally, we need to add two more I can’t hold back! BC377 NPN transistors, along with 1kΩ In closing our previous column, I more current-limiting resistors on their base than hinted that this month we were going Practical Electronics | June | 2024 (B) control inputs and connect these to the Arduino, as shown in the schematic. Yes, of course, I’ve updated our master diagram to reflect this new setup (file CB-Jun24-03.pdf). Super software All we need now is some super software to drive our new setup. I just forked (copied) the final program from our previous column and made a few modifications. There’s nothing we haven’t seen before, but there are a few subtleties that will make it worth our while to peek at some of the bits and pieces. As a reminder, we are multiplexing our four displays, which means only one will be active at a time. The main reason for doing this is that we currently have only enough pins on our Arduino to control one set of A, B, C, D, E, F, G, DP segments at a time. Also, we’ve selected our 150Ω current-limiting resistors to supply the maximum current (20mA) that the display segments are rated for. The Arduino’s pins would be uncomfortable providing more than this amount of current for an extended period, so activating two or more displays simultaneously would be the opposite of a good idea. In one respect, it’s meaningless to think of our four displays in terms of ‘leastsignificant’ and ‘most-significant’ because we aren’t using them to display a single numerical value per se. Having said this, for the purposes of our program, we’re going to consider D0 and D3 as being the least- and most-significant, respectively. For reasons that will become apparent when we delve into the code, we are going to activate the displays in the order D0, D1, D2, and D3. Suppose, for example, we wish to display a time like 6:24. In our HH:MM format, we will include a leading 0 and present this as 06 24 (Fig.5). OK, now let’s look at our new program (file CB-Jun24-04.txt). We’ll start with the definitions as shown in Listing 4a. 53 Listing 4a. Definitions. Time Listing 4c. Our new setup() function. Fig.5. Order of display. In addition to NUM_SEGS (the number of segments on each display) and NUM_ DIGITS (the number of digits, 0 to 9, that we wish to display), we’ve added NUM_DISPLAYS (the number of displays, D0 to D3, we’re now using). Similarly, in addition to SEG_ON and SEG_OFF, to which we’ve assigned the HIGH and LOW values required to activate and deactivate the segments on our common-cathode displays, respectively, we’ve added TRAN_ON and TRAN_OFF, to which we’ve assigned the HIGH and LOW values required to activate and deactivate the NPN transistors we’re using, respectively. Next, let’s turn our attention to our pin declarations and assignments (Listing 4b). In our previous column, there were several Listing 4b. Pin assignments. 54 reasons why it made sense to declare the pins used to control the transistors individually. These reasons included our having only two displays, coupled with the way in which we decided to present values on these displays. In our new program, In addition to the 8-element PinsSegs[] array, to which we’ve assigned the numbers of the pins used to drive the display segments, we’ve added a 4-element PinsTrans[] array, to which we’ve assigned the pins used to drive our transistors. Remember that the elements in our PinsTrans[] array are numbered 0, 1, 2 and 3, which is the order in which we’ve assigned the pins used to drive the transistors associated with displays D0, D1, D2 and D3, respectively. The setup() function is easy peasy lemon squeezy (Listing 4c). We start by initialising our real-time clock on Line 58. On Lines 66 to 69 we use a for() loop to define the pins driving our segments as being of type OUTPUT. Then, on Line 70, we call our DisplaySegs() function to turn all the segments off. We’ve seen this before in previous programs. New to this program is the fact that, since we’ve now declared the pins controlling our transistors as an array, we can use another for() loop on Lines 59 to 63 to declare each pin as being of type OUTPUT and to then deactivate that transistor. The reason I inserted this before our original for() loop is to ensure all the transistors are turned off as soon as possible. Finally, let’s turn our attention to the loop() function (Listing 4d). After declaring the same hour and minute variables we’ve used before, on Line 78 we’ve added a new 4-element array called dispData[]. We are going to use this array to store the four 0 to 9 values we wish to present on our D0, D1, D2 and D3 displays. We’ve seen the statements in Lines 80 to 89 in our previous program. However, on Lines 92 to 95, we now enter our HH:MM values into our dispData[] array. The combination of our PinsTrans[] and dispData[] arrays allows us to create the for() loop on Lines 98 to 104. This loop cycles through the four displays in the order D0, D1, D2 and D3. Each time round the loop, on Line 100 we activate the segments we wish to display (we’ll return to this in a moment), on Line 101 we activate the transistor associated with the current display, on Line 102 we wait for our ON_OFF_TIME delay, which is currently set to 10 (milliseconds), and on Line 103 we deactivate the transistor associated with the current display. Line 100 might cause your brain to stumble a bit. The way to read this is like peeling an onion but the other way round. That is, we start with the deepest layer and work our way out. Thus, we start with our ‘call’ to dispData[iData], which returns an integer containing the 0 to 9 value we wish to present on the current display. We then use this value in our ‘call’ to DigitSegs[], which returns a byte containing the segment on/off values we need to use. We then pass this byte into the call to our trusty DisplaySegs() function. Another way to think about this – and another way we could have implemented it – would be to break everything out into individual steps as follows: Practical Electronics | June | 2024 20ms Period (P) = 20ms Frequency (f) = 50Hz 10 10 D0 D1 (a) Two displays 40ms 10 30 Period (P) = 40ms Frequency (f) = 25Hz D0 D1 D2 D3 (b) Four displays Fig.6. The origin of our flicker problem. Listing 4d. Our new loop() function. int tmpInt = dispData[iDisp]; byte tmpByte = DigitSegs[tmpInt]); DisplaySegs(tmpByte); This step-by-step approach is the way we would have done things earlier in this series because it can be easier for beginners to understand, but (a) we are beginners no more and (b) the approach we are now using is more concise. In fact, at some stage you may be surprised to discover yourself living in ‘opposite world’ where you find the step-by-step approach to be tedious and annoying, while the concise construct turns out to be easier on the eye and faster to parse and comprehend. How does it look? I’m glad you asked. It doesn’t look very good. The digits are flickering horribly. Fortunately, I was expecting this to happen. Actually, I was hoping it would, thereby providing a ‘teachable moment,’ as it were. At one stage in our previous column, we started to display the digits 4 and 2 on two displays. We defined ON_OFF_TIME as being 1000 (that’s 1000 milliseconds (ms) or 1 second (s)). Then we looped around displaying the 4 on the first display for ON_OFF_TIME followed by the 2 on the second display for ON_OFF_TIME. Next, we changed the value of ON_OFF_TIME to be 100 (that’s 1/10 of a second). This allowed us to see both digits at the same time but with an annoying flicker. Finally, we changed ON_OFF_TIME to be 10 (that’s 1/100 of a second), resulting in both digits being on with no discernable flicker. Practical Electronics | June | 2024 Since each display is on for 10ms and off for 10ms, this means each has a repeating cycle time, or period (P), of 20ms. In turn, this means each display is turning on and off with a frequency (f), which is 1/P. Remembering that frequency is specified in hertz (Hz), which is the number of cycles per second, then our frequency = 1000/20 = 50Hz (Fig.6a). The problem is that we are still using the same ON_OFF_TIME value of 10 in our new program (Line 18 in Listing 4a). Now that we are using four displays, this means each display is on for 10ms and off for 30ms. In turn, this means each display has a period of 40ms and a frequency of 25Hz. Hence the flicker (Fig.6b). First, I tried changing ON_OFF_TIME to 5, thereby returning us to having a flicker-free frequency of 50Hz. Eventually, however, I decided to use an ON_OFF_TIME value of 2, resulting in each display having a period of 8ms and a frequency of 125Hz. The current situation is very tasty (Fig.7). Of course, since each display is now on for only 25% of the time, it’s only a quarter as bright as a full-on display. However, this would really become apparent only if we had a full-on display for comparison. As we discussed in last month’s column, the human eye has a wide dynamic range coupled with a nonlinear response to brightness. The result is that our four displays still appear to be reasonably bright. Even better, in a future column, we will discuss an alternative approach to boost our brightness. Online resources For the purposes of this series, I’m going to assume that you are already familiar with fundamental concepts like voltage, current and resistance. If not, you might want to start by perusing and pondering a short series of articles I penned on these very topics – see: https://bit.ly/3EguiJh Similarly, I’ll assume you are no stranger to solderless breadboards. Having said this, even if you’ve used these little scamps before, there are some aspects to them that can trap the unwary, so may I suggest you feast your orbs on a column I wrote just for you – see: https://bit.ly/3NZ70uF Last, but not least, you will find a treasure trove of resources at the Arduino.cc website, including example programs and reference documentation. 55 Fig.7. It’s alive! It’s alive! You are thinking out loud again. I can almost hear you muttering, ‘What’s that little board in the upper right-hand corner where our eight 150Ω current-limiting resistors used to be?’ I have to say I’m impressed that you spotted that. All will be revealed in next month’s column. Meanwhile… Just one more thing… We still have more to do, but once we’ve finally finished evolving and experimenting with our prototype clock, we may wish to create a more permanent and robust implementation. One option is to use a free schematic capture and layout program to design our own custom printed circuit board (PCB) and then have it fabricated somewhere. There are lots of tools and fabs out there, but that’s a whole different ballgame. (This could be a topic for one or more Cool Beans columns in the future. If you would be interested in something like this, please email me to let me know.) An alternative approach is to replicate our final design in a more robust and comelier manner. With respect to the ‘more robust’ part, we could purchase some solderable breadboards with the look-and-feel of our solderless breadboards. There are various vendors of these boards, each offering their own interpretation, but the main terminal holes and power rails are typically to be found in the expected locations (Fig.8). Observe the way in which the power and ground rails are split at the leftand right-hand sides on the back side of the board. This allows us to use multiple power supplies (eg, 5V and 3.3V) and/or multiple grounds (eg, separate analogue and digital grounds) if so required. Alternatively, these can be connected using jumper wires. One example is the large single universal solderable breadboard from Treedix (https://bit.ly/3Tsn38t). But what about something like our clock project, which currently employs two breadboards? Fear not, because the guys and gals at Treedix have us covered with their large dual universal solderable breadboard – see: https://bit.ly/3IuHYl6 What about the wiring? Thus far, we’ve been using multicore jumper wires to make our connections. However, as we see in Fig.7, this isn’t an approach we would wish to use on something we wanted to display E D C B A I H G F E D C B A I H G F LEDs (assorted colours) https://amzn.to/3E7VAQE Resistors (assorted values) https://amzn.to/3O4RvBt Solderless breadboard https://amzn.to/3O2L3e8 Multicore jumper wires (male-male) https://amzn.to/3O4hnxk Components from Part 2 J J 60 I (a) Front (component and wire) side 1 55 F G H 5 5 A B C D E 55 1 I 60 J 1 F G H 5 A B C D E 55 J Components from Part 1 60 1 5 55 60 (b) Back (power and ground) side Fig.8. Generic example of a solderable breadboard. 7-segment display(s) https://amzn.to/3Afm8yu Components from Part 5 Momentary pushbutton switches https://amzn.to/3Tk7Q87 Components from Part 6 Passive piezoelectric buzzer https://amzn.to/3KmxjcX Components for Part 9 SW-18010P vibration switch https://bit.ly/46SfDA4 Components for Part 10 Breadboard mounting trimpots https://bit.ly/3QAuz04 Components for Part 12 Light-Dependent Resistor https://bit.ly/3S2430m Components for Part 13 BC337 NPN Transistor https://bit.ly/40xAgyS Components for Part 14 HC-SR04 Ultrasonic Sensor https://bit.ly/49AMBq4 Components for Part 15 Real-Time Clock (RTC) https://bit.ly/3S9OjHl Components for Part 18 Fig.9. Kit of pre-stripped, pre-formed, solid core jumper wires. 56 Long tailed (0.1-inch pitch) header pins https://bit.ly/3U1Vp2z Practical Electronics | June | 2024 Fig.10. An example of an old project using solid core jumper wires. to family and friends. One approach is to splash the cash for a kit of prestripped, pre-formed, solid core jumper wires (Fig.9). You can find these on Amazon – see: https://bit.ly/3vDs2KK A lot of the time you’ll need to cut them down and bend them around a bit, but the result can be quite pleasing to the eye. For example, consider a portion of one of my old projects from yesteryear (Fig.10). Next time… On the bright side, our existing clock works like a charm. On the downside, we’ve used all 12 of our digital pins – eight to control the display segments and four to control the transistors (we aren’t touching pins 0 and 1 because these are used by the Arduino to communicate with our host computer). This means we have no pins spare to add additional functionality (sad face). But turn that frown upside down into a smile because we have some cunning tricks up our sleeves (watch carefully – at no time will my hands leave the ends of my arms). In our next column, we really and truly are going to refresh our minds as to the concept of binary-coded decimal (BCD) and then investigate various deployments of BCD-to-7-segment decoders in our clock (otherwise my name’s not Max the Magnificent). Until next time, have a good one! Cool bean Max Maxfield (Hawaiian shirt, on the right) is emperor of all he surveys at CliveMaxfield.com – the go-to site for the latest and greatest in technological geekdom. Comments or questions? Email Max at: max<at>CliveMaxfield.com STEWART OF READING 17A King Street, Mortimer, near Reading, RG7 3RS Telephone: 0118 933 1111 Fax: 0118 933 2375 USED ELECTRONIC TEST EQUIPMENT Check website www.stewart-of-reading.co.uk Fluke/Philips PM3092 Oscilloscope 2+2 Channel 200MHz Delay TB, Autoset etc – £250 LAMBDA GENESYS LAMBDA GENESYS IFR 2025 IFR 2948B IFR 6843 R&S APN62 Agilent 8712ET HP8903A/B HP8757D HP3325A HP3561A HP6032A HP6622A HP6624A HP6632B HP6644A HP6654A HP8341A HP83630A HP83624A HP8484A HP8560E HP8563A HP8566B HP8662A Marconi 2022E Marconi 2024 Marconi 2030 Marconi 2023A PSU GEN100-15 100V 15A Boxed As New £400 PSU GEN50-30 50V 30A £400 Signal Generator 9kHz – 2.51GHz Opt 04/11 £900 Communication Service Monitor Opts 03/25 Avionics POA Microwave Systems Analyser 10MHz – 20GHz POA Syn Function Generator 1Hz – 260kHz £295 RF Network Analyser 300kHz – 1300MHz POA Audio Analyser £750 – £950 Scaler Network Analyser POA Synthesised Function Generator £195 Dynamic Signal Analyser £650 PSU 0-60V 0-50A 1000W £750 PSU 0-20V 4A Twice or 0-50V 2A Twice £350 PSU 4 Outputs £400 PSU 0-20V 0-5A £195 PSU 0-60V 3.5A £400 PSU 0-60V 0-9A £500 Synthesised Sweep Generator 10MHz – 20GHz £2,000 Synthesised Sweeper 10MHz – 26.5 GHz POA Synthesised Sweeper 2 – 20GHz POA Power Sensor 0.01-18GHz 3nW-10µW £75 Spectrum Analyser Synthesised 30Hz – 2.9GHz £1,750 Spectrum Analyser Synthesised 9kHz – 22GHz £2,250 Spectrum Analsyer 100Hz – 22GHz £1,200 RF Generator 10kHz – 1280MHz £750 Synthesised AM/FM Signal Generator 10kHz – 1.01GHz £325 Synthesised Signal Generator 9kHz – 2.4GHz £800 Synthesised Signal Generator 10kHz – 1.35GHz £750 Signal Generator 9kHz – 1.2GHz £700 HP/Agilent HP 34401A Digital Multimeter 6½ Digit £325 – £375 HP 54600B Oscilloscope Analogue/Digital Dual Trace 100MHz Only £75, with accessories £125 (ALL PRICES PLUS CARRIAGE & VAT) Please check availability before ordering or calling in HP33120A HP53131A HP53131A Audio Precision Datron 4708 Druck DPI 515 Datron 1081 ENI 325LA Keithley 228 Time 9818 Practical Electronics | June | 2024 Marconi 2305 Marconi 2440 Marconi 2945/A/B Marconi 2955 Marconi 2955A Marconi 2955B Marconi 6200 Marconi 6200A Marconi 6200B Marconi 6960B Tektronix TDS3052B Tektronix TDS3032 Tektronix TDS3012 Tektronix 2430A Tektronix 2465B Farnell AP60/50 Farnell XA35/2T Farnell AP100-90 Farnell LF1 Racal 1991 Racal 2101 Racal 9300 Racal 9300B Solartron 7150/PLUS Solatron 1253 Solartron SI 1255 Tasakago TM035-2 Thurlby PL320QMD Thurlby TG210 Modulation Meter £250 Counter 20GHz £295 Communications Test Set Various Options POA Radio Communications Test Set £595 Radio Communications Test Set £725 Radio Communications Test Set £800 Microwave Test Set £1,500 Microwave Test Set 10MHz – 20GHz £1,950 Microwave Test Set £2,300 Power Meter with 6910 sensor £295 Oscilloscope 500MHz 2.5GS/s £1,250 Oscilloscope 300MHz 2.5GS/s £995 Oscilloscope 2 Channel 100MHz 1.25GS/s £450 Oscilloscope Dual Trace 150MHz 100MS/s £350 Oscilloscope 4 Channel 400MHz £600 PSU 0-60V 0-50A 1kW Switch Mode £300 PSU 0-35V 0-2A Twice Digital £75 Power Supply 100V 90A £900 Sine/Sq Oscillator 10Hz – 1MHz £45 Counter/Timer 160MHz 9 Digit £150 Counter 20GHz LED £295 True RMS Millivoltmeter 5Hz – 20MHz etc £45 As 9300 £75 6½ Digit DMM True RMS IEEE £65/£75 Gain Phase Analyser 1mHz – 20kHz £600 HF Frequency Response Analyser POA PSU 0-35V 0-2A 2 Meters £30 PSU 0-30V 0-2A Twice £160 – £200 Function Generator 0.002-2MHz TTL etc Kenwood Badged £65 Function Generator 100 microHz – 15MHz Universal Counter 3GHz Boxed unused Universal Counter 225MHz SYS2712 Audio Analyser – in original box Autocal Multifunction Standard Pressure Calibrator/Controller Autocal Standards Multimeter RF Power Amplifier 250kHz – 150MHz 25W 50dB Voltage/Current Source DC Current & Voltage Calibrator £350 £600 £350 POA POA £400 POA POA POA POA Marconi 2955B Radio Communications Test Set – £800 57