A simple Command Line Interface (CLI)

When developing libraries and other complex applications, I find that I often need to exercise specific parts of the library/application as it is being developed.

One way to do this is to write specific test code to exercise functionality. Another is to provide an interactive command line interface to achieve the same.

Until recently I hard coded these testing code CLI for each application. I now have a simple class that enables a flexible and consistent CLI.

Continue reading “A simple Command Line Interface (CLI)”

Easy Neopixel bitmaps using Excel

Digitally addressable LEDs allow you to control large numbers of LEDs using digital communication to integrated control chips that manage all the rest for you. Matrices of these LEDs can make attractive displays but it can be somewhat of a pain to create bitmaps for display.

I use an Excel worksheet to marshal the data, needing me to just fill in numbers in a worksheet matrix.

Continue reading “Easy Neopixel bitmaps using Excel”

Making noise with a SN76489 Digital Sound Generator – Part 3

In the first part and second part we examined the basics of the SN76489 hardware and the development of a library to manage sound production from this IC.

So, after all this effort, what kind of sound does this hardware produce? In this final post I run a few tests and dig into the resulting waveforms.

Continue reading “Making noise with a SN76489 Digital Sound Generator – Part 3”

Making noise with a SN76489 Digital Sound Generator – Part 2

In the first part we examined the basics of the SN76489 hardware and how to manage it at the hardware interface between MCU and IC.

To enable sound generation experiments, the first thing I did was create a library to allow me to write sketches without worrying too much about this underlying hardware management.

Continue reading “Making noise with a SN76489 Digital Sound Generator – Part 2”

Making noise with a SN76489 Digital Sound Generator – Part 1

Most computer games from the 80’s are recognizable by the bleeps and bloops they produced for sound. The easiest way to do this to toggle a single I/O pin to generate a square wave but there are some retro sound ICs that allow us to do much better for a minimal investment.

The SN76489 is one such IC that is still available at a very modest price and is easily interfaced to modern microprocessors.

Continue reading “Making noise with a SN76489 Digital Sound Generator – Part 1”

Solenoid Driver PCB

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”

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”

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”