@2908969,
    if (workMode) {         // авто
     
LEDtick();
      flowRoutnie(1000);        // крутим отработку кнопок и поиск рюмок
    } else {                // ручной
      if (btn.clicked()) {  // клик!
        systemON = true;    // система активирована
        timeoutReset();     // таймаут сброшен
      }
      if (systemON) 
flowRoutnie(0);  // если активны - ищем рюмки и всё такое
    }
  }
}
// поиск и заливка
void flowRoutnie(int delayMove) {
  if (systemState == SEARCH) {                            // если поиск рюмки
    bool noGlass = true;
    for (byte i = 0; i < NUM_SHOTS; i++) {
      if (shotStates
 == EMPTY && i != curPumping) {    // поиск
        TIMEOUTtimer.stop();
        noGlass = false;                                  // флаг что нашли хоть одну рюмку
        curPumping = i;                                   // запоминаем выбор
        systemState = MOVING;                             // режим - движение
        shotStates[curPumping] = IN_PROCESS;              // стакан в режиме заполнения
        delay(delayMove);
        servoON();                                        // вкл питание серво
        servo.attach();
        servo.setTargetDeg(shotPos[curPumping]);          // задаём цель
        DEBUG("find glass=");
        DEBUGln(curPumping);
        break;
      }
    }
красным то что поменялось или добавилось
@renby, у меня много чего другого в файле, ещё больше запутаетесь, сверху кусок скопируйте в свой файл
ЗЫ посмотрел и добавил ещё LEDtick();, потому как после установки рюмки и задержки на движение светодиод под рюмкой не загорается пока не пройдет задержка, так как LEDtick(); в loop вызывается после flowTick(), код сверху поправил