If anyone is interested I have some new code that will scroll numbers on the display.
byte anodePins[] = {A0,A1,2,3,4,5};
int segmentPins[] = {6,7,8,9,10,11,12,13};
int digits[10][8] = {
{6,7,8,9,12,13,13,13},
{6,7,6,7,6,7,6,7},
{6,8,9,10,11,12,12,12},
{6,7,9,10,11,12,12,12},
{6,7,10,11,13,13,13,13},
{7,9,10,11,12,13,13,13},
{7,8,9,10,11,12,13,13},
{6,7,6,7,6,7,6,12},
{6,7,8,9,10,11,12,13},
{6,7,7,9,10,11,12,13}
};
byte counter[6] = {42,42,42,42,42,42};
byte scroll[30] = {1,2,3,4,5,42,42,42,5,4,3,2,1,42,42,1,2,3,4,7,42,42,42,42,4,2,6,2,5,9};
int hold = 1;
int scrollPos = 0;
int anodePosition = 0;
int segmentPosition = 5;
void setup()
{
for(int a = 0; a < 6; a++)
{
pinMode(anodePins[a], OUTPUT);
anodesOff();
}
for(int s = 0; s < 8; s++)
{
pinMode(segmentPins[s], OUTPUT);
segmentsOff();
}
}
void loop()
{
for(int i = 0; i < 150; i++)
updateDisplay();
shiftArray();
}
void anodesOff()
{
for(int a = 0; a < 6; a++)
{
digitalWrite(anodePins[a], LOW);
}
}
void segmentsOff()
{
for(int s = 0; s < 8; s++)
{
digitalWrite(segmentPins[s], LOW);
}
}
void updateDisplay()
{
if(anodePosition == 6 && segmentPosition == -1 )
{
anodePosition = 0;
segmentPosition = 5;
}
else if(counter[segmentPosition] == 42)
{
digitalWrite(anodePins[anodePosition], LOW);
for(int p = 0; p < 8; p++)
{
digitalWrite(digits[counter[segmentPosition]][p], LOW);
}
delay(hold);
anodesOff();
segmentsOff();
anodePosition += 1;
segmentPosition -= 1;
}
else
{
digitalWrite(anodePins[anodePosition], HIGH);
for(int p = 0; p < 8; p++)
{
digitalWrite(digits[counter[segmentPosition]][p], HIGH);
}
delay(hold);
anodesOff();
segmentsOff();
anodePosition += 1;
segmentPosition -= 1;
}
}
void shiftArray()
{
for(int i = 0; i < 5; i++)
{
counter[i] = counter[i+1];
}
counter[5] = scroll[scrollPos];
++scrollPos;
if (scrollPos >= 30)
{
scrollPos = 0;
}
}