Domino Clock

You need some code like this to keep track of the hours & minutes gone by

  // when started flag is pressed, start counting in 10mS increments
  if (started == 1){
    currentmicros = micros();  // read the time.
    elapsedmicros = currentmicros - previousmicros;

    if (elapsedmicros >= interval) // 10 milliseconds have gone by
    {
      previousmicros  = previousmicros + elapsedmicros;  // save the time for the next comparison
      time_update = 1; // set flag to shift out the new time
    }

    if (time_update == 1){  // no updating if not at 10ms interval, skip this whole section
      // increment the counters, roll as needed, shift the digits out

      time_update = 0; // reset for next pass thru

      hundredths = hundredths +1;

      if (hundredths == 10){
        hundredths = 0;
        tenths = tenths +1;
      }

      if (tenths == 10){
        tenths = 0;
          ones_seconds = ones_seconds +1;
      }

          if (ones_seconds == 10){
      ones_seconds = 0;
        hundredths = hundredths +3;   // Speed up the clock!
        tens_seconds = tens_seconds +1;
    }

            if (tens_seconds == 6){
       tens_seconds = 0;
         hundredths = hundredths +6;   // Speed up the clock!
         ones_minutes = ones_minutes +1;
    }

      if (ones_minutes == 10){
        ones_minutes = 0;
        tens_minutes = tens_minutes +1;
      }
      if (tens_minutes == 6){
        tens_minutes = 0;
        ones_hours = ones_hours +1;  // not used in actual application, only here for stability test over longer time periods
      }
      if (ones_hours == 13){  // not used in actual application, only here for stability test over longer time periods
        ones_hours = 0;
        tens_hours = tens_hours +1;
      }
      if (paused == 0){
        // not paused, update the display

        // counters are all updated now, just do the shiftout one time here:
        digitalWrite(latchpin, LOW); // send the digits down to the shift registers!
        shiftOut(datapin, clockpin, MSBFIRST, segdisp[hundredths]); // print the hundredths digit
        shiftOut(datapin, clockpin, MSBFIRST, segdisp[tenths]);     // print the tenths digit
        shiftOut(datapin, clockpin, MSBFIRST, segdisp[ones_seconds]); // print the lower seconds digit
        shiftOut(datapin, clockpin, MSBFIRST, segdisp[tens_seconds]); // print the upper seconds digit
        shiftOut(datapin, clockpin, MSBFIRST, segdisp[ones_minutes]); // print the lower sinutes digit
        shiftOut(datapin, clockpin, MSBFIRST, segdisp[tens_minutes]); // print the upper minutes digit
        digitalWrite(latchpin, HIGH);
        if (tenths == 0 && hundredths == 0){ // update on screen once a second
          
        }  // end of 1 second check
      } // end of time update is not paused
    }  // end if time to be updated