It is an interesting aspect of human nature that we can’t stand to be ignored, particularly by a machine. I doubt we as a species are particularly sensitive to a snub by our own creations, rather I think we just don’t want to look stupid waiting on a machine that has gone off into the weeds. For what ever reason, our response as designers has been to create a Busy Indicator. Whether it is an animation of an hour class, a completion bar graphs, or just a blinking cursor, this indicator tells the user to ‘hold on I will be finished in just a moment.’
Of course it also serves the equally important function of telling the user when the system has ‘hung’ as well. The challenge in simple user interfaces is how to implement the busy indicator using the limited bandwidth at hand.
One option for 7-segment displays is to blink the display, or pulse the intensity. This is relatively easy to implement in a scanned system, just add in some non-driven scans into the display scanning routine. Holding non-driven scans for 0.5 to 1 second will blank the display, non-driven scans every other scan will drop the intensity of the display in half. Then it is just a matter of turning the blank scan function on/off at a 1-2 Hz rate, resulting in a variable intensity display or a flashing one. Both are relatively simple in that it only requires a few lines of code, but they also effectively demonstrating that the system is still running.
Another option is to use an animation to demonstrate that the system is busy. One that I implemented recently uses 7 segment displays to indicate that the finish order for cars in a PineWood Derby race. While the cars are moving, and the display has nothing to display, the displays simulate the wheels on the car by spinning around 1 lit segment. See below for a visual of the sequence.
Another variation on the system uses the same single lit segment, but it drives the pattern in a figure 8.
Both are relatively easy to implement, you just create a few extra segment combinations in your 7 segment decoder, and then cycle through the decoder at a 5-6 Hz rate. In my implementation, I put a counter on the system that increments the display value very 10-15 scans. The result was actually very easy on the eyes, and tied in well with the race theme of the system. It also let the spectators know that ‘Yes, the system is running’, and yes it correctly detected the start of the race.