// кнопки-крутилки

void encTick() {
  if ((!tost && !returnMenu) || promivka) {
    enc.tick();
  }
  if (enc.isLeft() && !save && !systemON) {
    if (MenuFlag == 0) {
      (Menu <= 0 ) ? Menu = 3 : Menu--; // Перемещение  по главному меню назад
    } else if (MenuFlag == 1) {
      Drink -= 5;
    } else if (MenuFlag == 3) {
      if (folTra == 1) {
        (folder2 <= 10 ) ? folder2 = 18 : folder2--; //  минусуем номер папки  .
      } else if (folTra == 2) {
        (num2 <= 1) ? num2 = tracks2 : num2--;
      } else if (folTra == 3) {
        volume2--;
      }
    } else if (MenuFlag == 4) {
      (subNastr <= 1 ) ? subNastr = 9 : subNastr--; // Перемещение  по меню настроек назад.
    } else if (MenuFlag == 12) {
      ManDrink[(ManRum - 1)] -= 5;
    } else if (MenuFlag == 31) {
      volume--;
    } else if (MenuFlag == 41) {
      servoPos--;
    } else if (MenuFlag == 15) {
      bright -= 5;
    } else if (MenuFlag == 42) {
      speedSer++;
    } else if (MenuFlag == 19) {
      sleepTime--;
    } else if (MenuFlag == 20) {
      time50ml -= 10;
    } else if (MenuFlag == 30) {
      (subMenu <= 1 ) ? subMenu = 3 : subMenu--; // Перемещение  по меню тостов настроек назад.
    } else if (MenuFlag == 40) {
      (subMenu <= 1 ) ? subMenu = 2 : subMenu--; // Перемещение  по меню серво настроек назад.
    } else if (MenuFlag == 33) {
      (folder <= 1 ) ? folder = 9 : folder--; //  Перемещение  по меню папок настроек назад.
    }

  }
  if ( enc.isRight() && !save && !systemON) {
    //if (!save) {
    if (MenuFlag == 0) {
      (Menu >= 3 ) ? Menu = 0 : Menu++; // Перемещение  по главному меню вперед.
    } else if (MenuFlag == 1) {
      Drink += 5;
    } else if (MenuFlag == 3) {
      if (folTra == 1) {
        (folder2 >= 18 ) ? folder2 = 10 : folder2++; // плюсуем номер папки от 10 до 18
      } else if (folTra == 2) {
        (num2 >= tracks2) ? num2 = 1 : num2++;  // плюсуем номер трека
      } else if (folTra == 3) {
        volume2++;
      }
    } else if (MenuFlag == 4) {
      (subNastr >= 9 ) ? subNastr = 1 : subNastr++; // Перемещение  по меню настроек вперед.
    } else if (MenuFlag == 12) {
      ManDrink[(ManRum - 1)] += 5;
    } else if (MenuFlag == 31) {
      volume++;
    } else if (MenuFlag == 41) {
      servoPos++;
    } else if (MenuFlag == 15) {
      bright += 5;
    } else if (MenuFlag == 42) {
      speedSer--;
    } else if (MenuFlag == 19) {
      sleepTime++;
    } else if (MenuFlag == 20) {
      time50ml += 10;
    } else if (MenuFlag == 30) {
      (subMenu >= 3 ) ? subMenu = 1 : subMenu++; // Перемещение  по меню тостов настроек вперед.
    } else if (MenuFlag == 40) {
      (subMenu >= 2 ) ? subMenu = 1 : subMenu++; // Перемещение  по меню серво настроек вперед.
    } else if (MenuFlag == 33) {
      (folder >= 9 ) ? folder = 1 : folder++; // Перемещение  по меню папок настроек вперед.
    }
  }

  if (enc.isTurn() && !save && !systemON) { // если произошло движение энкодера в любую сторону
    SAVEtimer.reset();
    if (MenuFlag == 0) {
      oled_menu();
    } else if (MenuFlag == 1) {
      Drink = constrain(Drink, 20, 50);
      oled_auto();
    } else if (MenuFlag == 3) {
      if (folTra == 1) {
        player = false;
        myMP3.stop();
        num2 = 1;
      } else if (folTra == 3) {
        volume2 = constrain(volume2, 0, 30);
        myMP3.volume(volume2);
      }
      if (!player) {
        tracks2 = myMP3.numTracksInFolder(folder2);
      }
      menu_play();
    } else if (Menu == 3 && MenuFlag == 4) {
      menu_nastr();
    } else if (MenuFlag == 12) {
      ManDrink[(ManRum - 1)] = constrain(ManDrink[(ManRum - 1)], 20, 50);
      multi_naliv2();
    } else if (MenuFlag == 31) {
      volume = constrain(volume, 0, 30);
      menu_vol(1);
    } else if (MenuFlag == 41) {
      servoPos = constrain(servoPos, 0, 180);
      servo.attach(SERVO_PIN);
      servo.write(servoPos);
      servo_calibr(3);
      shotPos[count] = servoPos;
    } else if (MenuFlag == 15) {
      bright = constrain(bright, 0, 254);
      menu_brigh(1);
      strip.setBrightness(bright);
    } else if (MenuFlag == 16) {
      barMan = !barMan;
      bar_man();
    } else if (MenuFlag == 32) {
      (mixTracks >= 1 ) ? mixTracks = 0 : mixTracks++;
      mix_track();
    } else if (MenuFlag == 33) {
      tracks = myMP3.numTracksInFolder(folder);
      if (tracks > 100) {
        tracks = 100;
      }
      num_folder();
    } else if (MenuFlag == 42) {
      speedSer = constrain(speedSer, 2, 30);
      servo_speed(1);
    } else if (MenuFlag == 19) {
      sleepTime = constrain(sleepTime, 0, 19);
      sleep_time(1);
    } else if (MenuFlag == 20) {
      time50ml = constrain(time50ml, 1000, 9999);
      kalibr_pump(1);
    } else if (MenuFlag == 30) {
      menu_tost();
    } else if (MenuFlag == 40) {
      menu_servo();
    }
  }


  if ( enc.isSingle()) { // одиночный клик
    SAVEtimer.reset();
    if (save) {
      save = false;
      lcd.backlight();
      check = true; //  проверяем рюмки
    } else {
      if (systemON) {  // нажата кнопка во время работы наливатора, то отбой всего
        systemState = SEARCH;
        DrinkCount = 0;
        strip.setLED(curPumping, mCOLOR(BLACK));             // подсветили
        strip.show();
        curPumping = -1; // снимаем выбор рюмки
        systemON = false;
        pumpOFF();                // помпу выкл
        moving = false;
        barMan = false;
        lcd.clear();
        lcd.setCursor(5, 1);
        print_lcd(71);//  ОТБОЙ!
        do {
          servo_move(0);
        } while (moving);
        delay(3000);
        returnMenu = true;

      } else if (Menu == 0 && MenuFlag == 0) { //Нажатие кнопки меню авто
        MenuFlag = 1;
        oled_auto();
      } else if (MenuFlag == 1 || MenuFlag == 2 ) { //Начинается автоматический разлив
        systemON = true;
        flag = true; // флаг ,если пустые рюмки найдены показываем меню налива
      } else if (Menu == 1 && MenuFlag == 0) { // меню мультиразлив
        MenuFlag = 2;
        multi_naliv();
      } else if (Menu == 2 && MenuFlag == 0) { // меню плеера
        if (!player) {
          tracks2 = myMP3.numTracksInFolder(folder2);
        }
        if (tracks2 == -1) {
          folTra = 1; // галочка на выборе папок
        }
        MenuFlag = 3;
        menu_play();
      } else if ( MenuFlag == 3) { // вошли в меню плеера
        if (!player) {
          nextTrack = true;
          myMP3.volume(volume2);
          folTra = 2;
        } else {
          if (folTra == 2) {
            if (oldNum == num2 && num2 < tracks2 ) {
              num2++;
            }
            nextTrack = true;
          }
          else if (folTra == 4) {
            player = false;
            myMP3.stop();
            folTra = 1;
            menu_play();
          }
        }
      } else if (Menu == 3 && MenuFlag == 0) { // меню настроек
        MenuFlag = 4;
        menu_nastr();
      } else if (Menu == 3 && MenuFlag == 4) { // вошли в меню настроек
        if (subNastr == 1) {  // промывка
          MenuFlag = 11;
          menu_promivka(0);
        } else if (subNastr == 2) { //мультиразлив
          MenuFlag = 12;
          multi_naliv2();
        } else if (subNastr == 3) { //   меню тосты
          MenuFlag = 30;
          if (player) {
            player = false;
            pause = false;
            myMP3.stop();
            playOn = true;
          }
          subMenu = 1;
          menu_tost();
        } else if (subNastr == 4) { // серво
          MenuFlag = 40;
          subMenu = 1;
          menu_servo();
        } else if (subNastr == 5) { // яркость led
          MenuFlag = 15;
          menu_brigh(0);
        } else if (subNastr == 6) { // режим бармен
          MenuFlag = 16;
          bar_man();
        } else if (subNastr == 7) { // напряжение батареи
          MenuFlag = 18;
          bat_volt();
        } else if (subNastr == 8) { // таймер сна
          MenuFlag = 19;
          sleep_time(0);
        } else if (subNastr == 9) { // калибровка помпы
          MenuFlag = 20;
          kalibr_pump(0);
        }
      } else if (MenuFlag == 30 && subMenu == 1 ) { // вошли из меню тост в настройку громкости
        MenuFlag = 31;
        menu_vol(0);
      } else if (MenuFlag == 30 && subMenu == 2 ) {  // вошли из меню тост в настройку перемешивания треков
        MenuFlag = 32;
        mix_track();

      } else if (MenuFlag == 30 && subMenu == 3 ) {  // вошли из меню тост в настройку   папки проигрывания
        MenuFlag = 33;
        num_folder();
      } else if (MenuFlag == 40 && subMenu == 1 ) {  // вошли из меню сервы в настройку положения сервы надрбмками
        MenuFlag = 41;
        servo_calibr(1);

      } else if (MenuFlag == 40 && subMenu == 2 ) {  // вошли из меню сервы в настройку  скорости сервы
        MenuFlag = 42;
        servo_speed(0);

      } else if (MenuFlag == 11 ) { // меню настройки промывка
        do {
          servo_move(0);
        } while (moving);
        menu_nastr();
        MenuFlag = 4;
      } else if (MenuFlag == 12 ) { // меню настройки мультиналива
        if (++ManRum > 6) {
          ManRum = 1;
        }
        multi_naliv2();
      } else if (MenuFlag == 31) { //меню настройки громкости
        myMP3.volume(volume);
        if (volume != 0) {
          tost = true;  // проверяем громкость
          delay (100);
        }
      } else if (MenuFlag == 42) {  // двигаем серво туда-обратно для наглядности установленной скорости
        do {
          servo_move(180);
        } while (moving);

        do {
          servo_move(0);
        } while (moving);

      } else if (MenuFlag == 20) {  // наливаем в рюмку для проверки величины налива, после изменения времени налива
        Drink = 50;
        systemON = true;
        kalibr_pump(1);
      }


      if (MenuFlag == 41 ) { //Калибровка серво
        if (++count >= NUM_SHOTS) {
          count = 0;
        }
        servoPos = shotPos[count];
        servo_calibr(2);
        do {
          servo_move(servoPos);
        } while (moving);
      }
    }

  }

  if (enc.isDouble() && !save && !systemON) { // двойной клик кнопки энкодера
    if (MenuFlag == 3 && tracks2 != -1) {
      if (!player) {
        (folTra >= 3 ) ? folTra = 1 : folTra++;
      } else {
        (folTra >= 4 ) ? folTra = 1 : folTra++;
      }
      menu_play();
    } else {

      if (MenuFlag == 15) {
        ledShowOn = !ledShowOn;
        menu_brigh(0);
      } else if (player) {
        pause = !pause;
        if (pause) {
          myMP3.pause();
        } else {
          myMP3.resume();
          PLAYtimer.reset();
        }
      }
    }
  }


  if (enc.isHolded() && !save && !systemON) { // длительное нажатие кнопки энкодера
    if (MenuFlag == 11 && !promivka) {
      promivka = true;
      systemON = true;
      flag = true;
    } else if (MenuFlag != 0 && MenuFlag <= 4) { //Выход в главное меню
      oled_menu();
      MenuFlag = 0;
    } else if (MenuFlag == 12) { //Выход из меню настроек мультиразлива в главное меню настроек
      MenuFlag = 4;
      menu_nastr();
      address = 10;
#ifdef MEMORY_ON
      for (uint8_t i = 0; i < 6; i++) {
        EEPROM.update(address, ManDrink[i]); // обновляем в памяти, дриньки для мультиразлива
        address++;
        delay(5);
      }
#endif
    } else if (MenuFlag == 31) { //Выход из меню громкости в меню тоста
      MenuFlag = 30;
      menu_tost();
      myMP3.volume(volume);
      address = 20;
#ifdef MEMORY_ON
      EEPROM.update(address, volume);
#endif
    } else if (MenuFlag == 32) { //Выход из меню перемешивания  в меню тоста
      MenuFlag = 30;
      menu_tost();
      address = 70;
#ifdef MEMORY_ON
      EEPROM.update(address, mixTracks); // обновляем в памяти флаг перемешивания тостов
#endif
      if (mixTracks == 1) {
        mix();  // перемешиваем треки
      }
    } else if (MenuFlag == 33) { //Выход из меню папок  в меню тоста
      MenuFlag = 30;
      menu_tost();
      address = 80;
#ifdef MEMORY_ON
      EEPROM.update(address, folder); // обновляем в памяти выбор папок
#endif
    } else if (MenuFlag == 41) { //Выход из меню  калибровки  сервы в меню настроек сервы
      MenuFlag = 40;
      count = -1;
      servoPos = 0;
      do {
        servo_move(0);
      } while (moving);
      menu_servo();
      address = 0;
#ifdef MEMORY_ON
      for (uint8_t i = 0; i < 6; i++) {
        EEPROM.update(address, shotPos[i]); // обновляем в памяти положение для сервы
        address++;
        delay(5);
      }
#endif
    } else if (MenuFlag == 15) { //Выход из меню настройки яркости led
      MenuFlag = 4;
      menu_nastr();
      check = true;
      address = 30;
#ifdef MEMORY_ON
      EEPROM.put(address, bright); // обновляем в памяти яркость led
#endif
    } else if (MenuFlag == 16) { // выход из режима включения бармена
      MenuFlag = 4;
      menu_nastr();
    } else if (MenuFlag == 42) { // выход из настроки скорости серво в меню настройки серво
      MenuFlag = 40;
      menu_servo();
      address = 40;
#ifdef MEMORY_ON
      EEPROM.update(address, speedSer); // обновляем в памяти скорость сервы
#endif
    } else if (MenuFlag == 18) {  // выход из меню просмотра напряжения батареи в меню настроек
      MenuFlag = 4;
      menu_nastr();
    } else if (MenuFlag == 19) {  // выход из меню настройки таймера сна в менюнастроек
      MenuFlag = 4;
      menu_nastr();
      address = 50;
#ifdef MEMORY_ON
      EEPROM.update(address, sleepTime); // обновляем в памяти таймер сна
#endif
      if (sleepTime != 0) {
        SAVEtimer.setInterval(sleepTime * 30000UL);
      }
    } else if (MenuFlag == 20) {  // выход из меню настройки помпы в меню настроек
      MenuFlag = 4;
      do {
        servo_move(0);
      } while (moving);
      menu_nastr();
      address = 60;
#ifdef MEMORY_ON
      EEPROM.put(address, time50ml); // обновляем в памяти время налива 50 мл.
#endif
    } else if (MenuFlag == 30 || MenuFlag == 40) { // выход из меню настройки тостов и серво в меню настроек
      MenuFlag = 4;
      menu_nastr();
      if (playOn) {
        player = true;
      }
    }
  }
}
