Hola, tengo un pequeño problema, estoy haciendo un código usando menus usando una pantalla LCD y teclado matricial, mi problema es que al avanzar entre los menus, si presiono alguna tecla que ya había usado antes me regresa a las pantallas anteriores.
//Dispensadora y mezcladora de pintura
/////////////////////////////////////////////////
//Configuración teclado matricial
#include <Keypad.h>
#include <LiquidCrystal.h>
#include <MenuBackend.h>
const byte Filas = 4; //Define la cantidad de filas del teclado
const byte Columnas = 4; //Define la cantidad de columnas del teclado
char teclas[Filas][Columnas] = { //Caracteres que detecta el Arduino al presionar las teclas
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte FilaPins[Filas] = {14, 15, 16, 17}; //Define los pines de las entradas de las filas en Arduino
byte ColumnaPins[Columnas] = {18, 19, 20, 21}; //Define los pines de las entradas de las columnas en Arduino
Keypad keypad = Keypad( makeKeymap(teclas), FilaPins, ColumnaPins, Filas, Columnas );
///////////////////////////////////////////////////////////////////
// Configuración LCD
/* 0 - D7
* 1 - D6
* 2 - D5
* 3 - D4
* 4 - E
* 5 - RS
* A - Positivo resistencia 220 Ohms
* K - Negativo
* RW - Negativo
* VO/VFE - Potenciometro 10k Ohms
*/
LiquidCrystal lcd(5, 4, 3, 2, 1, 0);
void setup()
{
lcd.begin(20, 4);
lcd.print("Dispensador de");
lcd.setCursor(0, 1);
lcd.print("pintura automatico");
lcd.setCursor(0, 3);
lcd.print(" Version 1.0");
}
void loop()
{
int Menu = 0;
int Menu1 = 0;
int Menu2 = 0;
int mL;
int Color;
char tecla;
char Inicio
int Cantidad;
int Start;
if (Start == 0)
{
Inicio = keypad.getKey();
}
if (Inicio == 'A') {
Start = 1;
Inicio = 'B';
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Configuracion");
delay(2000);
lcd.clear();
Menu1 = 'A';
}
if (Menu1 == 'A') {
lcd.print("Selecciona la");
lcd.setCursor(0, 1);
lcd.print("cantidad de pintura");
delay(2000);
lcd.clear();
lcd.print("1. 100mL 5. 500mL");
lcd.setCursor(0, 1);
lcd.print("2. 200mL");
lcd.setCursor(0, 2);
lcd.print("3. 300mL");
lcd.setCursor(0, 3);
lcd.print("4. 400mL");
Menu1 = 0;
}
Menu2 = keypad.getKey();
switch (Menu2) {
case '1': // 100mL
lcd.clear();
lcd.setCursor(0,1);
lcd.print("A seleccionado 100mL");
mL = 1;
Menu2 = 0;
delay(2000);
if (mL == 1)
{
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Selecciona el color");
delay(2000);
lcd.clear();
lcd.print("1. Rojo 5. Negro");
lcd.setCursor(0, 1);
lcd.print("2. Azul 6. Gris");
lcd.setCursor(0, 2);
lcd.print("3. Amarillo 7. Rosa");
lcd.setCursor(0, 3);
lcd.print("4. Blanco 8. Cafe");
delay(2000);
}
break;
case '2': // 200mL
lcd.clear();
lcd.setCursor(0,1);
lcd.print("A seleccionado 200mL");
mL = 2;
Menu2 = 0;
delay(2000);
if (mL == 2){
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Selecciona el color");
delay(2000);
lcd.clear();
lcd.print("1. Rojo 5. Negro");
lcd.setCursor(0, 1);
lcd.print("2. Azul 6. Gris");
lcd.setCursor(0, 2);
lcd.print("3. Amarillo 7. Rosa");
lcd.setCursor(0, 3);
lcd.print("4. Blanco 8. Cafe");
delay(2000);
}
break;
case '3': // 300mL
lcd.clear();
lcd.setCursor(0,1);
lcd.print("A seleccionado 300mL");
mL = 3;
Menu2 = 0;
delay(2000);
if (mL == 3){
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Selecciona el color");
delay(2000);
lcd.clear();
lcd.print("1. Rojo 5. Negro");
lcd.setCursor(0, 1);
lcd.print("2. Azul 6. Gris");
lcd.setCursor(0, 2);
lcd.print("3. Amarillo 7. Rosa");
lcd.setCursor(0, 3);
lcd.print("4. Blanco 8. Cafe");
delay(2000);
}
break;
case '4': // 400mL
lcd.clear();
lcd.setCursor(0,1);
lcd.print("A seleccionado 400mL");
mL = 4;
Menu2 = 0;
delay(2000);
if (mL == 4)
{
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Selecciona el color");
delay(2000);
lcd.clear();
lcd.print("1. Rojo 5. Negro");
lcd.setCursor(0, 1);
lcd.print("2. Azul 6. Gris");
lcd.setCursor(0, 2);
lcd.print("3. Amarillo 7. Rosa");
lcd.setCursor(0, 3);
lcd.print("4. Blanco 8. Cafe");
delay(2000);
}
break;
case '5': //500mL
lcd.clear();
lcd.setCursor(0,1);
lcd.print("A seleccionado 500mL");
mL = 5;
Menu2 = 0;
delay(2000);
if (mL == 5)
{
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Selecciona el color");
delay(2000);
lcd.clear();
lcd.print("1. Rojo 5. Negro");
lcd.setCursor(0, 1);
lcd.print("2. Azul 6. Gris");
lcd.setCursor(0, 2);
lcd.print("3. Amarillo 7. Rosa");
lcd.setCursor(0, 3);
lcd.print("4. Blanco 8. Cafe");
delay(2000);
}
break;
}
}
He tratado usando if pero sigue igual, por si no me doy mucho a entender, si estoy en el menu de selección de cantidad, si presiono la tecla A nuevamente me regresa al inicio, y si presiono cualquier tecla del 1-5 en cualquier parte del código me manda directamente a la selección del color.
Gracias.