Corregir Boton de exit para me devuelva al menu

Bueno estoy haciendo un proyecto de universidad que en si es hacer un sistema de altos flujos como un estilo ventilador ahorita solo me estoy dedicando a crear lo que es el menu voy a tener un menu que enseñe mi temperatura constante, y me enseñe el FiO2 y FlowRate pondre dos botones debajo de mi display debajo de cada opcion y bueno quiero que cuando apreto mi boton cambie mi display para hacer ajustes y si apreto exit pues regreso a mi menu
logre crear uno que me enseñe el mensaje de bienvenida y luego mi menu y cuando le doy a un boton me cambia el display y se queda ahi pero no logro salir de ahi mi boton exit no hace nada

#include <LiquidCrystal.h>

const int buttonA = 8; //FiO2
const int buttonB = 9; //FlowRate
const int buttonC = 10; //Increment value
const int buttonD = 12; // Decrease Value
const int Exit = 11; //Exit
const int On = 13; //Starts everything off
int buttonNewA;//buttonStateA
int buttonNewB;
int buttonNewC;
int buttonNewD;
int ExitVal;
int OnVal;
int modo;
int salir = 0;



LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

void setup() { // put your setup code here, to run once:
  pinMode(buttonA, INPUT_PULLUP);
  pinMode(buttonB, INPUT_PULLUP);
  pinMode(buttonC, INPUT_PULLUP);
  pinMode(buttonD, INPUT_PULLUP);
  pinMode(Exit, INPUT_PULLUP);
  pinMode(On, INPUT_PULLUP);
  Serial.begin(9600);
  lcd.begin(16,2);
  lcd.setCursor(0,0);
  lcd.print("Welcome to your");
  lcd.setCursor(3,1);
  lcd.print("Ventilator");
  delay(3000);

}
void Menu(){
  float voltageT = analogRead(A0) * 0.004882814;
  float degreesC = (voltageT - 0.5) * 100.0;
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Menu  Temp= ");
  lcd.setCursor(11,0);
  lcd.print(degreesC);
  lcd.setCursor(0,1);
  lcd.print("FiO2 // FlowRate");
  while(buttonNewA == HIGH && buttonNewB == HIGH && buttonNewC == HIGH){
    buttonNewA = digitalRead(buttonA);
    buttonNewB = digitalRead(buttonB);
    buttonNewC = digitalRead(buttonC);
  }
}

void loop() { // put your main code here, to run repeatedly:
  buttonNewA = digitalRead(buttonA);
  buttonNewB = digitalRead(buttonB);
  buttonNewC = digitalRead(buttonC);
  buttonNewD = digitalRead(buttonD);
  ExitVal = digitalRead(Exit);
  OnVal = digitalRead(On);
  
  Menu();

  if(buttonNewA == LOW){
      modo = 0;
  }
  
  if(buttonNewB == LOW){
      modo = 1;
  }
  
  if(buttonNewC == LOW){
    modo = 2;
  }

  if(ExitVal == LOW){
    Menu();
  }


  switch(modo){
    case 0:{
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("FiO2= ");
      salir = 0;
      while(salir == 0){
        buttonNewA = digitalRead(buttonA);
      }
      break;
    }
    case 1:{
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("FlowRate= ");
      salir = 0;
      while(salir == 0){
        buttonNewB = digitalRead(buttonB);
        if(buttonNewB == LOW){
          salir = 1;
        }
      }
      break;
    }
    case 2:{
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("ON ");
      delay(5000);
      break;
    }
      
  }


 
}

Tengo que añadirle despues un boton para que active todo lo que hice pero alguien me puede ayudar para que mi boton de exit me devuelva a mi display de menu

Moderador:
Hola, bienvenido al foro Arduino.
En la sección proyectos tienes estos dos hilos que debiste haber leído antes de postear

Como tu consulta es para otra sección lo muevo a Software.
En el título no debe usarse la palabra Ayuda. Edita!!
Por favor que tu título refleje lo que estas consultando.
Agradezco que hayas posteado debidamente el código. Solo ubicaste mal tu tópico.

Normas del foro

Le he echado un vistazo y ayudaría mucho que nos dijeses qué valor toma realmente:

En la línea 60 poner algo como esto:

  ExitVal = digitalRead(Exit);
  println(ExitVal);

Bueno el valor en el que esta Exit es HIGH o 1 y cuando es pulsado cambia a LOW o 0 por eso tengo los if con si el boton==Low pero logro entrar a mis casos switch pero no salir de ellos mi exit no hace nada

Pues si no entras al IF algo más está cambiando, imprime justo antes del if a ver qué tienes

Ok si imprime el resultado y bueno cunado entro siempre me one todos los botones estan en 1 cuando presiono el boton A este me cambia y entro al case 0: pero aca ya el exit ni ningun boton me enseñan un cambio tengo unos while loops que tengo ahi para que la pantalla se quede donde este sin cambiar mientras no se haga nada pero ahora no me toma ningun valor para poder salir

Moderador:
te envié privado por favor léelo y sigue las indicaciones que te hago.

No te preocupes por corregir nada.
Hilo cerrado por doble posteo.

Por privado te daré otra devolución

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.