Problema en menus y submenus

Hola, soy nueva en en la programación de Arduino y tengo problemas con mi nuevo proyecto

Ya que necesito que al presionar la tecla D en el keypad de 4X4 aparezca un menú de configuración en la LCD de 20X4

Este se encuentra en el loop

if (tecla=='D'){
configuracion();
}

Esto es lo que manda a llamar

Keypad teclado= Keypad(makeKeymap(keys), pinsFilas, pinsColumnas, filas, columnas);

char tecla=teclado.getKey();

void configuracion(){
lcd.setCursor(0, 0);
lcd.print("A=Humedad Ambiental");
lcd.setCursor(0, 1);
lcd.print("B=Temperatura Ambiental");
lcd.setCursor(0, 2);
lcd.print("C=Humedad Piso");

switch(teclado.getState()){
  case PRESSED:
    switch (tecla){
      case 'A':
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Ingrese password");
        if(checkPassword() == true){
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("Ingrese valor minimo");
            //minHumAmbi=
               //guardar y limpiar la pantalla para que se ingrese el maximo
          lcd.setCursor(0, 0);
          lcd.print("Ingrese valor maximo");
            //maxHumAmbi=
        }else{
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("Error de ingreso");
        } 
        break;
      case 'B':
    break;
  case 'C':
    break;    
    }
 }
}

También tengo la duda de como se guardan los valores ingresados en las variables, por ejemplo en la de minHumAmbi.

Les agradezco si me pueden ayudar

invernadero.ino (9.4 KB)

Hola IvonnEsme, te felicito por postear debidamente tu problema peroooo falta información. Coloca por favor todo el código y si no puedes porque supera los 9k lo adjuntas.

Al ver todo el código podremos evaluarlo mejor.

Gracias, ya lo adjunte.

Ya la parte de que me acepte la letra D ya esta pero ahora mi problema es que solo dura un momento y se quita, al igual que sigo sin saber como se guarda en la variable.

Les agradezco su ayuda

Vaya IvonnEsme, pareces una alumna aplicada que ha leído y seguido consejos.
Usas millis() para actualizar tareas lo que no veo habitualmente.
Ahora a ver si resolvemos tu problema:

Una manera simple de leer números para luego asignar a una variable es asi:

int GetNumber() {
   int num = 0;
   char key = teclado.getKey();
   while(key != '#')  {
      switch (key)       {
         case NO_KEY:
                     break;
         case '0': 
         case '1': 
         case '2': 
         case '3': 
         case '4':
         case '5': 
         case '6': 
         case '7': 
         case '8': 
         case '9':
                  lcd.print(key);
                  num = num * 10 + (key - '0');
                  break;
         case '*':
                  num = 0;
                  lcd.clear();
                  break;
      }
      key = teclado.getKey();
   }
   return num;
}

y la forma de usarlo y con esto respondo tu pregunta es asi:

minHumAmbi = GetNumber();