1

Тема: Проблема в написании меню

Здравствуйте. У меня такая проблемка, сделал меню не могу понять в чем дело, когда я захожу в меню настроек, изменяю любой параметр или не изменяю, при возвращении назад в главное меню, меня опять выкидывает в меню настроек.
Вот сам код:

void loop()
{
analogWrite(contrast,cont);
lcd.noCursor();
if(butY.isPressed()){
but+=1;
lcd.clear();
delay(200);
}
switch (but){
  case 1:
      lcd.home(); 
      delay(100);
      lcd.print("Старт");
      if(butX.isPressed()){
      delay(200);
      lcd.clear();
      start();
      }
  break;
  case 2:
      lcd.home(); 
      delay(100);
      lcd.print("Настройки");
      if(butX.isPressed()){
      delay(200);
      lcd.clear();
      but=1;
      sets();
      }
  break;
  default:
  lcd.clear();
  but=1;
  delay(200);
  break;
}
}

void sets(){

if(butY.isPressed()){
but+=1;
delay(200);
lcd.clear();
}
switch (but){
  case 4:
      lcd.home(); 
      delay(100);
      lcd.print("Назад");
      if(butX.isPressed()){
      lcd.clear();
      but=1;
      delay(200);
      loop();
      }
  break;
    case 1:
      lcd.home(); 
      delay(100);
      lcd.print("Величина");
      lcd.setCursor(0, 1);
      lcd.print(value);
      if(butX.isPressed()){
      but=1;
      value1();
      lcd.clear();
      }
  break;
  case 2:
      lcd.home(); 
      delay(100);
      lcd.print("Задержка");
      lcd.setCursor(0, 1);
      lcd.print(zd);
      if(butX.isPressed()){
      but=1;
      deley();
      lcd.clear();
      }
  break;
  case 3:
      lcd.home(); 
      delay(100);
      lcd.print("Дисплей");
      lcd.setCursor(0, 1);
      lcd.print(cont);
      if(butX.isPressed()){
      but=1;
      lcd.clear();
      desplay();
      }
  break;
  default:
  lcd.clear();
  but=1;
  break;
}
sets();
}

void value1(){
if(butY.isPressed()){
but+=1;
delay(200);
lcd.clear();
}
  switch (but){
      case 1:
      lcd.home(); 
      delay(100);
      lcd.print("Величина +");
      lcd.setCursor(0, 1);
      lcd.print(value);
      if(butX.isPressed()){
      value=value+1;
      delay(100);
      lcd.clear();
      }
  break;
  case 2:
      lcd.home(); 
      delay(100);
      lcd.print("Величина -");
      lcd.setCursor(0, 1);
      lcd.print(value);
      if(butX.isPressed()){
       if(value >= 2){
      value=value-1;
       }
      delay(100);
      lcd.clear();
      }
  break;
  case 3:
      lcd.home(); 
      delay(100);
      lcd.print("Назад");
      if(butX.isPressed()){
      lcd.clear();
      but=1;
      delay(100);
      sets();
      }
  break;
  default:
  but=1;
  break;
  }
  value1();
}