@vader7071
1)
Please change the quote tags in the post to code tags. So we don't have to try to translate smilies and we don't have to read italics.
2)
Please post complete code. If it's too big, either attach or split over two or more posts.
And for the problem, I think that you need to get rid of delay completely.
PS
Re-reading your post, I think that you already figured that out. In which case you should get rid of the outer for loop in your scroll function.
void scroll(char* text)
{
static int scrollPositions = 0;
// when starting a new scroll, get the length
if(scrollPositions == 0)
{
scrollPositions = (strlen(text) * 8) - 32;
}
static int scrollCount = 8 * NUM_MATRICES;
static unsigned long scrollStart;
// if it's time
if (scrollStart - millis() >= msgInterval)
{
// scroll one position
for (uint8_t m = 0; m < NUM_MATRICES; m++)
{
matrix[m].clear();
matrix[m].setCursor((x - (m * 8)), 0);
matrix[m].print(text);
matrix[m].writeDisplay();
}
// restart timing
scrollStart = millis();
// one move completed
scrollCount--;
}
// if scroll completed
if (scrollCount == 0)
{
// reset for next scroll
scrollPositions = 0;
}
}
Not compiled but it should give you the idea.