Letrero neo pixel ws2811

Buenas noches compañeros retomando un poco la programación estoy con el reto de hacer un letrero con ws2811 en modo de cronometro al monteo de iniciar este funciona correctamente pero al momento de pasar los 33 segundos contabilizados comienza hacer cosas raras y no desplega la cuenta en curso les dejo el código para ver si ustedes ven algun error o una mejor idea de como relizar este letrero

#include <Adafruit_NeoPixel.h>

#define PIN 8

Adafruit_NeoPixel strip = Adafruit_NeoPixel(63, PIN, NEO_GRB + NEO_KHZ800);

unsigned long DigitBytes[] = {
 0x0003FFFF, // 0
 0x000001F8, // 1
 0x001C7E3F, // 2
 0x001C0FFF, // 3
 0x001F81F8, // 4
 0x001F8FC7, // 5
 0x001FFFC7, // 6
 0x000001FF, // 7
 0x001FFFFF, // 8
 0x001F81FF  // 9
};

int m, mu=0,md=0;                           
int s, su=0,sd=0;
int l, lu=0,ld=0,lc1=0;

void setup() {
  strip.begin();
}

void showDigit(int d, int offset) {
  unsigned long digit = DigitBytes[d];

  for (int i = offset; i < offset + 21; i++) {
    if (digit & 1) {
      strip.setPixelColor(i, 0xF8F8FF);
    } else {
      strip.setPixelColor(i, 0x000000);
    }
    digit = digit >> 1;
  }
  strip.show();
}

void loop() {
  int tiempoContabilizado=millis();
      m=(tiempoContabilizado/1000)/60;                 //Calculamos los minutos
      mu=m%10;                            //Descomponemos los minutos y sacamos el valor de las unidades
      md=(m-mu)/10;                       //Descomponemos los minutos y sacamos el valor de las decenas
       
      s=(tiempoContabilizado/1000)%60;                 //Calculamos los segundos
      su=s%10;                            //Descomponemos los segundos y sacamos el valor de las unidades
      sd=(s-su)/10;                       //Descomponemos los segundos y sacamos el valor de las decenas
       
      l=(tiempoContabilizado%1000);                    //Calculamos las milesimas de segundo
      lu=l%10;                            //Descomponemos las milesimas y sacamos el valor de las unidades
      ld=((l-lu)/10)%10;                  //Descomponemos las milesimas y sacamos el valor de las decenas
      lc1=(l-(ld*10)-lu)/100;              //Descomponemos las milesimas y sacamos el valor de las centenas
  
     showDigit(su, 0);
    showDigit(sd, 21);
    showDigit(md, 42);
  
    
}

de igual manera me pasa con la libreria fastled

#include "FastLED.h"
#define NUM_LEDS 63 // 4*7*4 +2  Number of LED controlled
#define COLOR_ORDER BRG  // Define color order for your strip
#define DATA_PIN 6  // Data pin for led comunication
int x = 1;

CRGB leds[NUM_LEDS]; // Define LEDs strip
                    // 0,0,0,0
                    // 1,1,1,1
                    //  1 2 3 4 5 6 7 8 9 10111213141516171819202122232425262728
byte digits[10][21] = {{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0},  // Digit 0
                       {0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0},   // Digit 1
                       {1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1},   // Digit 2
                       {1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1},   // Digit 3
                       {0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1},   // Digit 4
                       {1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1},   // Digit 5
                       {1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},   // Digit 6
                       {1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0},   // Digit 7
                       {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},   // Digit 8
                       {1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1}};   // Digit 9 | 2D Array for numbers on 7 segment
                     
                     int m, mu=0,md=0;                           
int s, su=0,sd=0;
int l, lu=0,ld=0,lc1=0;                  


// int ledColor = 0x0000FF; // Color used (in hex)
long ledColor = CRGB::LightCoral; // Color used (in hex)



void setup(){ 
  Serial.begin(9600); 
//  Wire.begin(); 
  LEDS.addLeds<WS2811, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS); // Set LED strip type
  LEDS.setBrightness(75); // Set initial brightness
 LEDS.setBrightness(255);
   
} 

// Convert time to array needet for display 
void TimeToArray(){
  int Now =x;  // Get time
  
  int cursor = 63; // last led number

    
  for(int i=1;i<=4;i++){
    int digit=su;
    int digit1=sd;
    int digit2=md;
    // get last digit in time[]={10,24,10045,0}
    if (i==1){
    Serial.print("Digit 4 is : ");Serial.print(digit);Serial.print(" ");

      cursor = 86;
      
      for(int k=0; k<=21;k++){ 
         Serial.print(digits[digit][k]);
        if (digits[digit][k]== 1){leds[cursor]=ledColor;}
         else if (digits[digit][k]==0){leds[cursor]=0x000000;};
         cursor ++;
        };
       Serial.println();

      
      
      }
    else if (i==2){
      Serial.print("Digit 3 is : ");Serial.print(digit);Serial.print(" ");

      cursor =42;
      
      for(int k=0; k<=20;k++){ 
         Serial.print(digits[digit][k]);
        if (digits[digit2][k]== 1){leds[cursor]=ledColor;}
         else if (digits[digit][k]==0){leds[cursor]=0x000000;};
         cursor ++;
        };
       Serial.println();
      }
    else if (i==3){
       Serial.print("Digit 2 is : ");Serial.print(digit);Serial.print(" ");
      cursor =21;
      for(int k=0; k<=20;k++){ 
         Serial.print(digits[digit][k]);
        if (digits[digit1][k]== 1){leds[cursor]=0xFF0000;}
         else if (digits[digit][k]==0){leds[cursor]=0x000000;};
         cursor ++;
        };
      // Serial.println();
      }
    else if (i==4){
    //  Serial.print("Digit 1 is : ");Serial.print(digit);Serial.print(" ");
      cursor =0;
      for(int k=0; k<=20;k++){ 
        Serial.print(digits[digit][k]);
        if (digits[digit][k]== 1){leds[cursor]=ledColor;}
         else if (digits[digit][k]==0){leds[cursor]=0x000000;};
         cursor ++;
        };
      // Serial.println();
      }
  
  }; 
};


  
void loop()  // Main loop
{ 

  TimeToArray(); // Get leds array with required configuration
  FastLED.show(); // Display leds array
  int tiempoContabilizado=millis();
      m=(tiempoContabilizado/1000)/60;                 //Calculamos los minutos
      mu=m%10;                            //Descomponemos los minutos y sacamos el valor de las unidades
      md=(m-mu)/10;                       //Descomponemos los minutos y sacamos el valor de las decenas
       
      s=(tiempoContabilizado/1000)%60;                 //Calculamos los segundos
      su=s%10;                            //Descomponemos los segundos y sacamos el valor de las unidades
      sd=(s-su)/10;                       //Descomponemos los segundos y sacamos el valor de las decenas
       
      l=(tiempoContabilizado%1000);                    //Calculamos las milesimas de segundo
      lu=l%10;                            //Descomponemos las milesimas y sacamos el valor de las unidades
      ld=((l-lu)/10)%10;                  //Descomponemos las milesimas y sacamos el valor de las decenas
      lc1=(l-(ld*10)-lu)/100;              //Descomponemos las milesimas y sacamos el valor de las centenas
  

}