I wondered about the SPI thing. I thought the max7219 was non-standard SPI unlike the max7221. But I see both ways of talking to it in different sketches. Maybe we could just modify the LEDCONTROL library to use SPI in the library.

Btw I figured out your font table and how that all works. I noticed ~ doesn't work but it should. What is the highest ASCII charc you use? I think I figured it was 32-136. Which after 127 it is the extended charc which doesn't display correctly, so I must be missing something.

RIght now I am working on a breadboard but the PCB's should be here in a few weeks.

Let me know if I can help with anything.

Thanks again, this has really helped a lot more than any other examples. I spent all weekend on this.

Edit: I have to admit the other ones that where smooth didn't use the LEDCONTROL library and just did SPI inside the sketch. Would be nice to see a library that uses SPI.

The font data for character 126 is 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, so clearly that is blank. If you want a tilde either download cv_fonted and use the editor or make a guess and roll your own. This data is row-wise so here is a guess:

The flaw in the design where there is some jitter in the display is a software problem on my side, not the LED library or hardware. What this software does is scan each row by advancing the current bit being displayed on the current character in the string until it gets to the end of that character (by length lookup) and then advancing to the next character. After each row it restores the position and advances the row until it gets to row 8. At the end of writing the rows, the software restores the position and advances by one bit (column) to achieve the scrolling effect. It has to know the correct current character to look up the current character length. Even though the software it restores the start bit position and character in string position it does not restore the current character correctly for length lookup, it uses whatever character was displayed (or partially displayed) last. This causes the counter not to advance a lot of the time and the jitter. If you are using my software for scrolling purposes, fix it with this change. Add the one line indicated.

Sorry for anyone that was inconvenienced by this bug. I actually totally rewrote the part of the code that writes to the MAX7219s and eliminated the LEDLibrary and this bug persisted which led me to the obvious conclusion that my code sucked somewhere. At least now I know how the MAX7219 works on a register level, though. The new version can scroll the display so fast it is not readable without a decent delay.