A part of a bigger project needed control circuits for up to 16 DC solenoids. Instead of wiring up a one-off prototype, I decided to design and manufacture a PCB to do the job in a scalable manner, and with a minimum of Arduino pins, so that the same circuits could be used for future high power on/off control tasks.Continue reading “Solenoid Driver PCB”
Beginners love Arduino coding because there is so much of it available to just copy, load and go without too much thinking required.
Then they find that one thing they want to do is in one sketch and another in a second sketch. All they need to do is combine these sketches! This can be a big hurdle the first time it happens and many fail to get a satisfactorily working product.
There is a systematic approach to this that helps to ensure that things work.Continue reading “Combining Arduino Sketches”
The first part of this article introduced a simple Finite State Machine through the exercise of transforming the standard linearly programmed Blink example into a FSM style application.
In this part we’ll look at other common embedded applications and how they can be coded using FSM techniques.Continue reading “Finite State Machine Programming Basics – Part 2”
Many beginner programmers, once they go beyond the ‘blinking LED’ code, get blocked by not being able to do more than one thing at once. In many cases they are directed to the ‘Blink WithOut Delay’ code (BWOD) as a hint about what to do, but this soon also runs out of steam. BWOD implies, but does not make explicit, a Finite State Machines (FSM) approach.
In this article we’ll evolve the simple linear Blinking LED sketch into a FSM to illustrate the difference in approach.Continue reading “Finite State Machine Programming Basics – Part 1”
In the first part we explored the functions of this MAX7219 and how the SPI link is the key to making the device work for us.
In this part we’ll develop code to efficiently display numeric data using 7-segment and LED matrix displays.Continue reading “Using the MAX7219 in your Projects – Part 2”
The MAX7219 is a common and inexpensive IC used for controlling up to eight 7-segment LED displays (or 64 individual LEDs).
Beginners are often intimidated by how to use this versatile component with a microcontroller, turning to libraries to help them solve the problem. In most simple cases, it is more efficient to run the IC directly. Here’s what you need to know to get the job done.Continue reading “Using the MAX7219 in your Projects – Part 1”
When an application starts, any data was was part of a previous execution is reset to the initialised values of the variables. Often, however, it is desirable to maintain configuration and state values between processor resets. EEPROM is a good option to store these values.
This article explores ways to make this task easy.Continue reading “Persisting Application Parameters in EEPROM”
One of the many repeating themes on the Arduino forums is the use of Strings (with a capital ‘S’) against usings strings (with a little ‘s’) – the former refers to a class that encapsulates string handling and the latter refers to the use of nul terminated char arrays.
The kind of forum threads involved are generally someone who wants to use Strings and is having a problem followed by a lot of other posts telling them not to because they are ‘bad’.
So what makes them ‘bad’ and is this really a problem?Continue reading “Are Strings really that Evil?”
A recent feature of the Parola library is sprite based text effects. This extends the functionality of the library to include fully customisable, user defined, animated bitmaps to wipe text on and off the LED matrix display.
Here’s how it works.
The key function of the Parola library is to display text using different animations. From version 2.7 onwards, Parola allows user code to manage mixing graphics with the text. The extensions to the library and what they do is the subject of this article.