HELP needed on light sequencer

I am currently making a light sequencer for my holiday christmas lights and it was going well until I reached a point where all my LED's shut off, this occurs around 83 seconds through the sketch, despite the code which was written to continue on. I will paste the code in this thread, but what could be going wrong? I'm using an arduino uno. Basically of theses "flickbooks" there are 6 of them but do to the character limit I had to remove the first 4.

long time = 0;
const int buttonPin = 12;     
const int ledPin1 =  13;      
int buttonState = 0;        
int interval = 0;
int leds[] = {2,10, 4, 5, 6, 7, 8, 9};
#define NUMBER_OF_LEDS (sizeof(leds)/sizeof(int))
 

boolean flickbook5[][NUMBER_OF_LEDS] = {        //ROCK N' ROLL!!!
{HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH}, //1.1
{HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH},
{HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH, HIGH},
{HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH, HIGH},  
{HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH},//1.2
{HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH},
{HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH},
{HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH}, 
{HIGH, HIGH, HIGH, LOW, HIGH, LOW, HIGH, HIGH,}, //1.3
{HIGH, HIGH, HIGH, LOW, HIGH, LOW, HIGH, HIGH},
{LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
{HIGH, HIGH, HIGH, LOW, HIGH, LOW, HIGH, HIGH},
{LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW}, //1.4
{HIGH, HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH},
{HIGH, HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH},
{HIGH, HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH},
};
boolean flickbook6[][NUMBER_OF_LEDS] = {                              //CHORUS 1/32NDS 
  {LOW, LOW, HIGH, HIGH, HIGH, HIGH, LOW, LOW},     //1.1
  {LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
  {LOW, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH},
  {LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
  {LOW, HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH}, //1.2
  {LOW, HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH},
  {LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
  {LOW, LOW, LOW, LOW, LOW, LOW, HIGH, HIGH}, 
  {HIGH, HIGH, HIGH, LOW, LOW, HIGH, HIGH, HIGH}, //1.3
  {LOW, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW},
  {LOW, LOW, HIGH, HIGH, HIGH, HIGH, LOW, LOW}, 
  {LOW, LOW, HIGH, HIGH, HIGH, LOW, LOW, LOW}, 
    {HIGH, HIGH, HIGH, LOW, LOW, HIGH, HIGH, HIGH},  //1.4
  {LOW, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW}, 
  {LOW, LOW, HIGH, HIGH, HIGH, HIGH, LOW, LOW}, 
  {LOW, LOW, HIGH, HIGH, HIGH, LOW, LOW, LOW}, 
  {LOW, LOW, HIGH, HIGH, HIGH, HIGH, LOW, LOW},     //2.1
  {LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
  {LOW, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH},
  {LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
  {LOW, HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH}, //2.2
  {LOW, HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH},
  {HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW, LOW},
  {HIGH, HIGH, HIGH, HIGH, LOW, HIGH, HIGH},  
  {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW, LOW}, //2.2 (46)
   {LOW, LOW, LOW, LOW, LOW, LOW, HIGH, HIGH}, 
   {LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW}, 
    {HIGH, HIGH, LOW, LOW, LOW, HIGH, LOW, LOW},
    {HIGH, LOW, LOW, LOW, LOW, LOW, LOW, HIGH}, //2.3 
};
  
#define FRAMES (sizeof(flickbook)/(sizeof(flickbook[0])))
#define FRAMES2 (sizeof(flickbook2)/(sizeof(flickbook2[0])))
#define FRAMES3 (sizeof(flickbook3)/(sizeof(flickbook3[0])))
#define FRAMES4 (sizeof(flickbook4)/(sizeof(flickbook4[0])))
#define FRAMES5 (sizeof(flickbook5)/(sizeof(flickbook5[0])))
#define FRAMES6 (sizeof(flickbook6)/(sizeof(flickbook6[0])))
int sensorPin = 0;

void setup()   {   
  
  pinMode(ledPin1, OUTPUT);      
  pinMode(buttonPin, INPUT);     
  for (int led=0; led<NUMBER_OF_LEDS; led++) {  
    pinMode(leds[led], OUTPUT);
  }    
}

void loop(){
 //declare reset function @ address 0
  long time = millis();
  int led;
     buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH && millis() <15000) {
  for (int frame=0; frame<FRAMES; frame++) {
   for (led=0; led<NUMBER_OF_LEDS; led++) {  
     digitalWrite(leds[led], flickbook[frame][led]);
   }
   while (interval >= (millis() - time)) {   
   }
   time = millis();
   if (millis() <= 1500) {
     interval = 468/2;
 }
}}
  if (buttonState == HIGH && millis() >= 15000 && millis() < 22600 || millis() >= 35600 && millis() < 37383) {
  for (int frame2=0; frame2<FRAMES2; frame2++) {
   for (led=0; led<NUMBER_OF_LEDS; led++) {  
     digitalWrite(leds[led], flickbook2[frame2][led]);
   }
   while (interval >= (millis() - time)) {   
   }
   time = millis();
   if (millis() >= 1500) {
     interval = 468/4;
   }
}}
  if (buttonState == HIGH && millis() >= 22600 && millis() < 35600 || millis() >= 37383 && millis() < 52522) {
  for (int frame3=0; frame3<FRAMES3; frame3++) {
   for (led=0; led<NUMBER_OF_LEDS; led++) {  
     digitalWrite(leds[led], flickbook3[frame3][led]);
   }
   while (interval >= (millis() - time)) {   
   }
   time = millis();
   if (millis() >= 1500) {
     interval = 468/4;
   }
}}
  if (buttonState == HIGH && millis() >= 52522 && millis() < 80495) {  //1ST DROP
  for (int frame4=0; frame4<FRAMES4; frame4++) {
   for (led=0; led<NUMBER_OF_LEDS; led++) {  
     digitalWrite(leds[led], flickbook4[frame4][led]);
   }
   while (interval >= (millis() - time)) {   
   }
   time = millis();
   if (millis() >= 1500) {
     interval = 468/8;          //1/32nds
   }
}}
  if (buttonState == HIGH && millis() >= 80495 && millis() < 82514) {      //Rock N' Roll!!!
  for (int frame5=0; frame5<FRAMES5; frame5++) {
   for (led=0; led<NUMBER_OF_LEDS; led++) {  
     digitalWrite(leds[led], flickbook5[frame5][led]);
   }
   while (interval >= (millis() - time)) {   
   }
   time = millis();
   if (millis() >= 1500) {
     interval = 468/4;          //1/16nds
   }}
    if ( millis() >= 82515) {      //CHORUS
  for (int frame6=0; frame6<FRAMES6; frame6++) {
   for (led=0; led<NUMBER_OF_LEDS; led++) {  
     digitalWrite(leds[led], flickbook6[frame6][led]);
   }
   while (interval >= (millis() - time)) {   
   }
   time = millis();
   if (millis() >= 1500) {
     interval = 468/4;          //1/16nds
   }
}
  }}
}
 }
}}

That shouldn't ever happen.
Please use the auto format tool before posting.

while (interval >= (millis() - time)) {   
   }

Or, you could just have used "delay".

sorry about that, I have auto-formated the code now. And I'm not using delay as delay, throws off all my calculations on what parts should start when.

long time = 0;
const int buttonPin = 12;     
const int ledPin1 =  13;      
int buttonState = 0;        
int interval = 0;
int leds[] = {
  2,10, 4, 5, 6, 7, 8, 9};
#define NUMBER_OF_LEDS (sizeof(leds)/sizeof(int))

boolean flickbook5[][NUMBER_OF_LEDS] = {        //ROCK N' ROLL!!!
  {
    HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH  }
  , //1.1
  {
    HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH  }
  ,
  {
    HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH, HIGH  }
  ,
  {
    HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH, HIGH  }
  ,  
  {
    HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH  }
  ,//1.2
  {
    HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH  }
  ,
  {
    HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH  }
  ,
  {
    HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH  }
  , 
  {
    HIGH, HIGH, HIGH, LOW, HIGH, LOW, HIGH, HIGH,  }
  , //1.3
  {
    HIGH, HIGH, HIGH, LOW, HIGH, LOW, HIGH, HIGH  }
  ,
  {
    LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW  }
  ,
  {
    HIGH, HIGH, HIGH, LOW, HIGH, LOW, HIGH, HIGH  }
  ,
  {
    LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW  }
  , //1.4
  {
    HIGH, HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH  }
  ,
  {
    HIGH, HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH  }
  ,
  {
    HIGH, HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH  }
  ,
};
boolean flickbook6[][NUMBER_OF_LEDS] = {                              //CHORUS 1/32NDS 
  {
    LOW, LOW, HIGH, HIGH, HIGH, HIGH, LOW, LOW  }
  ,     //1.1
  {
    LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW  }
  ,
  {
    LOW, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH  }
  ,
  {
    LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW  }
  ,
  {
    LOW, HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH  }
  , //1.2
  {
    LOW, HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH  }
  ,
  {
    LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW  }
  ,
  {
    LOW, LOW, LOW, LOW, LOW, LOW, HIGH, HIGH  }
  , 
  {
    HIGH, HIGH, HIGH, LOW, LOW, HIGH, HIGH, HIGH  }
  , //1.3
  {
    LOW, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW  }
  ,
  {
    LOW, LOW, HIGH, HIGH, HIGH, HIGH, LOW, LOW  }
  , 
  {
    LOW, LOW, HIGH, HIGH, HIGH, LOW, LOW, LOW  }
  , 
  {
    HIGH, HIGH, HIGH, LOW, LOW, HIGH, HIGH, HIGH  }
  ,  //1.4
  {
    LOW, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW  }
  , 
  {
    LOW, LOW, HIGH, HIGH, HIGH, HIGH, LOW, LOW  }
  , 
  {
    LOW, LOW, HIGH, HIGH, HIGH, LOW, LOW, LOW  }
  , 
  {
    LOW, LOW, HIGH, HIGH, HIGH, HIGH, LOW, LOW  }
  ,     //2.1
  {
    LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW  }
  ,
  {
    LOW, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH  }
  ,
  {
    LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW  }
  ,
  {
    LOW, HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH  }
  , //2.2
  {
    LOW, HIGH, HIGH, LOW, LOW, LOW, HIGH, HIGH  }
  ,
  {
    HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW, LOW  }
  ,
  {
    HIGH, HIGH, HIGH, HIGH, LOW, HIGH, HIGH  }
  ,  
  {
    HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW, LOW  }
  , //2.2 (46)
  {
    LOW, LOW, LOW, LOW, LOW, LOW, HIGH, HIGH  }
  , 
  {
    LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW  }
  , 
  {
    HIGH, HIGH, LOW, LOW, LOW, HIGH, LOW, LOW  }
  ,
  {
    HIGH, LOW, LOW, LOW, LOW, LOW, LOW, HIGH  }
  , //2.3 
};

#define FRAMES (sizeof(flickbook)/(sizeof(flickbook[0])))
#define FRAMES2 (sizeof(flickbook2)/(sizeof(flickbook2[0])))
#define FRAMES3 (sizeof(flickbook3)/(sizeof(flickbook3[0])))
#define FRAMES4 (sizeof(flickbook4)/(sizeof(flickbook4[0])))
#define FRAMES5 (sizeof(flickbook5)/(sizeof(flickbook5[0])))
#define FRAMES6 (sizeof(flickbook6)/(sizeof(flickbook6[0])))
int sensorPin = 0;

void setup()   {   

  pinMode(ledPin1, OUTPUT);      
  pinMode(buttonPin, INPUT);     
  for (int led=0; led<NUMBER_OF_LEDS; led++) {  
    pinMode(leds[led], OUTPUT);
  }    
}

void loop(){
  //declare reset function @ address 0
  long time = millis();
  int led;
  buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH && millis() <15000) {
    for (int frame=0; frame<FRAMES; frame++) {
      for (led=0; led<NUMBER_OF_LEDS; led++) {  
        digitalWrite(leds[led], flickbook[frame][led]);
      }
      while (interval >= (millis() - time)) {   
      }
      time = millis();
      if (millis() <= 1500) {
        interval = 468/2;
      }
    }
  }
  if (buttonState == HIGH && millis() >= 15000 && millis() < 22600 || millis() >= 35600 && millis() < 37383) {
    for (int frame2=0; frame2<FRAMES2; frame2++) {
      for (led=0; led<NUMBER_OF_LEDS; led++) {  
        digitalWrite(leds[led], flickbook2[frame2][led]);
      }
      while (interval >= (millis() - time)) {   
      }
      time = millis();
      if (millis() >= 1500) {
        interval = 468/4;
      }
    }
  }
  if (buttonState == HIGH && millis() >= 22600 && millis() < 35600 || millis() >= 37383 && millis() < 52522) {
    for (int frame3=0; frame3<FRAMES3; frame3++) {
      for (led=0; led<NUMBER_OF_LEDS; led++) {  
        digitalWrite(leds[led], flickbook3[frame3][led]);
      }
      while (interval >= (millis() - time)) {   
      }
      time = millis();
      if (millis() >= 1500) {
        interval = 468/4;
      }
    }
  }
  if (buttonState == HIGH && millis() >= 52522 && millis() < 80495) {  //1ST DROP
    for (int frame4=0; frame4<FRAMES4; frame4++) {
      for (led=0; led<NUMBER_OF_LEDS; led++) {  
        digitalWrite(leds[led], flickbook4[frame4][led]);
      }
      while (interval >= (millis() - time)) {   
      }
      time = millis();
      if (millis() >= 1500) {
        interval = 468/8;          //1/32nds
      }
    }
  }
  if (buttonState == HIGH && millis() >= 80495 && millis() < 82514) {      //Rock N' Roll!!!
    for (int frame5=0; frame5<FRAMES5; frame5++) {
      for (led=0; led<NUMBER_OF_LEDS; led++) {  
        digitalWrite(leds[led], flickbook5[frame5][led]);
      }
      while (interval >= (millis() - time)) {   
      }
      time = millis();
      if (millis() >= 1500) {
        interval = 468/4;          //1/16nds
      }
    }
    if ( millis() >= 82515) {      //CHORUS
      for (int frame6=0; frame6<FRAMES6; frame6++) {
        for (led=0; led<NUMBER_OF_LEDS; led++) {  
          digitalWrite(leds[led], flickbook6[frame6][led]);
        }
        while (interval >= (millis() - time)) {   
        }
        time = millis();
        if (millis() >= 1500) {
          interval = 468/4;          //1/16nds
        }
      }
    }
  }
}

the_official_gent:
And I'm not using delay as delay, throws off all my calculations on what parts should start when.

The problem is that there isn't any variable or significant amount of time between here:

long time = millis();

and here:

while (interval >= (millis() - time)) {   
      }

So delay can be used instead to make it more readable.

thanks so what your saying is that delay doesn't freeze the internal clock running on the arduino?

the_official_gent:
thanks so what your saying is that delay doesn't freeze the internal clock running on the arduino?

What internal clock? Do you mean timers? No, delay doesn't "freeze" the timers, they are interrupt driven.

the_official_gent:
sorry about that, I have auto-formated the code now. And I'm not using delay as delay, throws off all my calculations on what parts should start when.

millis() is the time elapsed since the arduino was powered up and doesn't get reset (until it rolls over)
Your timings based on:

  if (buttonState == HIGH && millis() <15000)

will be ok for the first time round loop() but the next and subsequent times millis() will always be greater than 15000.
Try instead:

//in setup
unsigned long startTime = 0;
//and in loop()
 if (buttonState == HIGH && (millis() - startTime <15000))
 {
    for (int frame=0; frame<FRAMES; frame++) {
      for (led=0; led<NUMBER_OF_LEDS; led++) {  
        digitalWrite(leds[led], flickbook[frame][led]);
      }
      while (interval >= (millis() - time)) {   
      }
      }
      StartTime = millis();
      if (millis() - startTime <= 1500) {
        interval = 468/2;
      }

sorry I'm a rookie at this, so it won't affect my
if (millis() > x) {} statements? And still why does it stop at around 83 seconds? around a second after flickbook6 starts. Also I'll try that, but in the end I planned on having it reset itself every hour.

the_official_gent:
sorry I'm a rookie at this, so it won't affect my
if (millis() > x) {} statements? And still why does it stop at around 83 seconds? around a second after flickbook6 starts. Also I'll try that, but in the end I planned on having it reset itself every hour.

Depends what you're trying to do. That code will check to see if the time since the sketch started is greater than x milliseconds. The time since the sketch started will increase and not be reset, so that once that statement is true it can never be false again until millis() rolls over, which takes days, or you restart the sketch (press reset or disconnect and reconnect the power).
What you probably want is to measure elapsed time. In setup(), read your clock (millis()), make a note of the start time (save it in a variable). Then, in loop(), regularly check if time now (millis()) minus the start time is equal or greater than the elapsed time (x) you need. If it is, do something and also reset your start time for the next time round loop(). You can have more than one start time variable to measure different elapsed times.