Combining Arduino Sketches

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”
Advertisements

Finite State Machine Programming Basics – Part 2

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”

Finite State Machine Programming Basics – Part 1

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”

Persisting Application Parameters in EEPROM

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”

Are Strings really that Evil?

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?”

Parola A to Z – Optimizing Flash Memory

RAM_Chip

A question that often arises is how to ‘save program memory’ when the MD_Parola and MD_MAX72xx libraries are used in an application. In this article we’ll cover how you can do this using the facilities already built into the library code.

Continue reading “Parola A to Z – Optimizing Flash Memory”

TCS230 Revisited – Frequently Asked Questions

TCS230 Sensor

My first post about calibrating TCS230 RGB color sensor has consistently been the most read article on the site. A lot of readers have also used the MD_TCS230 library to write their own sketches. A few questions, however, have consistently been asked on forums and via email about the sensor and the library. Here is a collection of these FAQs and their answers.

Continue reading “TCS230 Revisited – Frequently Asked Questions”

YX5300 Serial MP3 Player (Catalex Module)

YX5300_Serial_MP3_PlayerWhile browsing eBay looking for a module to play extended sound effects (MP3 and WAV files), I came across these modules that looked like they would fit my purpose. The module has been around for a few years and is based on the YX5300 IC. As it turns out they are easy to use and produce a good sound in a small package.

Continue reading “YX5300 Serial MP3 Player (Catalex Module)”

Fun and Games, and a New Library

F+G_Icon

I have for some time wanted to (re)write some of the computer games from my younger days as an exercise in programming and for a bit of fun. I recently decided to do this on a very low-res display made from individual LED matrix modules and in the process created a new library to manage the LED panel display.

Continue reading “Fun and Games, and a New Library”

How slow can you go? Multiplexing, that is.

7-seg_hardware

The proper operation of a multiplexed displays relies on a feature of human visual perception known as flicker fusion – if a light is flashed quickly enough, individual flashes become imperceptible and the illusion of a steady light is created.

But how slow can you go before you can detect that flicker?

Continue reading “How slow can you go? Multiplexing, that is.”