Тема: Проблема в написании меню
Здравствуйте. У меня такая проблемка, сделал меню не могу понять в чем дело, когда я захожу в меню настроек, изменяю любой параметр или не изменяю, при возвращении назад в главное меню, меня опять выкидывает в меню настроек.
Вот сам код:
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();
}