I need to find myself a software guru. As I discussed in my recent column — Fine-Tuning Arduino Sketches: H/W or S/W? — I'm a hardware design engineer by trade, so my knee-jerk reaction to any problem is to look for a hardware solution.
As an example, when I'm creating an Arduino sketch to control lighting effects, I may wish to experiment with different combinations of values for things like colors, transition speeds, display times, and suchlike. Until now, I've either hard-coded the values into my programs using #define statements (which means I have to perform numerous edit-compile cycles to compare effects), or I've created a hardware control panel comprising a bunch of switches and potentiometers.
As a case in point, consider my current project du jour , which is a 12-digit countdown timer. In order to make this interesting, I'm planning on incorporating a variety of effects. For example, check out this video showing a first-pass randomizing effect.
This really is a rudimentary implementation. It simply involves generating a series of random numbers (50 in this example) with a delay between them (10ms in this example), and then pausing for a second on the final value before doing the whole thing all over again.
There are all sorts of things we could play with here. For example, we could start by transitioning (generating and displaying random numbers) at a certain rate and maintain this rate for some period we might call the sustain time. Then we could gradually slow down over a period we might call the decay time until we halt on the final value.
(Source: Max Maxfield)
In this case, using the hard-coded-values approach makes it a pain to compare and fine-tune different combinations of variables, not the least that — by the time you've performed the edit and compile and re-started the program — you've forgotten what the previous version looked like. Thus, I decided to throw together a hardware-based control panel using physical switches and potentiometers. The image below shows the backside of this panel in the process of being wired-up.
(Source: Max Maxfield)
However, my chum Ivan in the next bay has alerted me to the fact that there might be a software-based solution. Ivan's idea is to use the Arduino to draw a text-based menu system in a Serial Terminal window, and to then use the host computer keyboard to select variables of interest and modify their values.
The Arduino IDE does include a Serial Monitor, but this is somewhat limited. The ideal solution would be to use a Serial Terminal that supports VT100 escape codes. Ivan has actually done this as a special one-off solution for one of his own projects, but he says it can be a bit tricky to get everything working together.
To cut a long story short, what I want to be able to do is something like the following:
- Download a free VT100-capable Serial Terminal application and install it on my PC.
- Download a “DIY-Menu” library for the Arduino.
Now, when I'm creating an Arduino program, I would #include the DIY-Menu library and then write the code to draw and service my particular menu.
After uploading and running the program on the Arduino, instead of clicking the Serial Monitor icon in the Arduino's IDE, I would launch the JS-DIY-Menu app. In turn, this would automatically determine which COM port the Arduino was using, launch the VT100-capable Serial Terminal application, place it in VT100 mode, and connect it to the Arduino.
At this point, the Arduino would draw my menu on the screen, after which I could use my keyboard to select menu items and vary/specify parameters.
So, I know what I want, I just don’t know how to achieve it. What I need to do is talk to a software guru who has a clue, but where are we going to find one at this time of the day?
Wanted: A master of the mystic software arts (Source: pixabay.com)
I was mulling this poser over when I thought to myself: “Hang on, ESC Minneapolis is only a few weeks away!” (The Embedded Systems Conference (ESC) Minneapolis 2017 will be held November 8-9 at the Minneapolis Convention Center.)
I'm now performing my Happy Dance because past experience has taught me that whenever I have any sort of hardware or software conundrum, someone at ESC will be happy to point me in the right direction.
Are you planning on attending ESC Minneapolis? If so, perhaps I'll see you there and we can chat about my software menu poser. If you don't see me wandering around, then I'll be giving a couple of presentations at the ESC Engineering Theater, and these presentations will be open to anyone to attend so long as they are flaunting a Free Expo Pass (all you have to do is register). I'll be the one in the Hawaiian shirt. As always, all you have to do is shout “Max, Beer!” or “Max, Bacon!” to be assured of my undivided attention.