Разряд зажигается примерно раз в 20мс (это если используется скетч с поддержкой светодиодов, в "старом" скетче - примерно раз в 25мс). Допустим, будем осуществлять перебор в обратную сторону, то есть нужно совершить 9 циклов, т.о., минимальный интервал перебора составляет 180мс. Другое дело, будет ли это видно с такой скоростью? Даже если ограничить 500мс, смена знаков будет осуществляться 20 раз в секунду. Информативно? Как реализовать?
Если речь идёт о том, чтобы запустить перебор всех разрядов (как это сделано сейчас) каждую секунду, то это просто: SH_EVERY ставите 1, SH_FOR - 250, SH_STEP - 25, переносите счётчик перебора
if ( shMinCounter != 0 ) shMinCounter--;
перед
if (secs > 59) {
в процедуре calculateTime, по идее должно работать. Если нужно учитывать начальные цифры и перебор делать только там, где поменялась цифра - здесь тяжелее. Фактически, нужно убрать shMinCounter (всё равно он всегда равен 1), shFlag, shDigit превратить в массивы размерностью [6] и в showDigits обрабатывать перебор в соответствии с текущим значением counter. Проблема будет состоять в том, как определить, какая цифра поменялась? Это нужно делать в calculateTime, сравнивая поразрядно цифры до и после изменения времени.