MAX7456 breakout board/some flicker on the character

delete

Wish I understood your code better, a little advanced for me, sorry.

Is it possible for you to update the screen only when something changes? The easiest way would be to wait until something changes, clear the screen, then write the new information, then wait for something to change again.

It looks like it is being refreshed every cycle of your main loop? Again, it looks like it is happening so fast, that there is a flicker occasionally.

It looks pretty nice though to me, the occasional line is very minimal.

The reason there is no flicker on the welcome screen is Display is only called once, then you have your delay.

In your loop, you call Display every 100ms. If you only call Display when something on your screen has changed, the flicker will be significantly reduced, probably to the point where you won't notice it at all since it would only occur when the screen was changing anyway.

Alternatively, if you went through the hardware signals you could possibly ensure changes to the data of the display only happen when the display isn't drawing.

To reduce the calls to Display, you need something like:

boolean dataChanged = false;

loop() {

   ...
   if (dataChanged)  {
      osd.Display(HUD);
      dataChanged = false;
   }
}

processData() {
   ...
   if (some data has changed) {
      dataChanged = true;
   }
}

Hi Roar,

The ArduinoCodePAL is not a library. It is your sketch, so you will have to change it yourself.

If the change you're making is to only call Display() when data has changed, you only need to modify your sketch.

This will show you how it looks without flicker.

But, for it to work for you ultimately, you need to initially set the dataChanged to false, and only set it to true when there are updates from the serial port.

This may be a little too advanced for you at this stage. You need to do some basic programming exercises to increase your understanding about general coding.

boolean dataChanged = true;

void loop()
{    
    if (dataChanged)
    {
       HUD[93] = 'N';
       HUD[94] = 'O';
       HUD[96] = 'C';
       HUD[97] = 'O';
       HUD[98] = 'M'
       osd.Display(HUD);
       dataChanged = false;
   }

}