Estou tentando criar um menu de opções através do Switch para acionamento de alguns componentes. Quando vou visualizar no monitor serial ele fica imprimindo em loop infinito o menu do case 0; e caso eu aperte a opção "1" do teclado matricial, ele fica repetindo em loop infinito o menu do case 1 e assim por diante..
O código está incompleto pessoal, nao colei ele todo aqui, mas queria resolver esse loop dentro do Switch logo no começo pois está me incomodando. Gostaria que o menu aparecesse uma vez e aguardasse o botão ser pressionado.
obs*: neste código que colei aqui o case 2 está sem o break mas no meu compilador está com ele.
#include <Keypad.h>
const uint8_t row_size = 4; // Quantidade de linhas.
const uint8_t col_size = 4; // Quantidade de colunas.
const uint8_t row_pin[row_size] = {24,26,28,30}; // Pinos que estão ligados as linhas.
const uint8_t col_pin[col_size] = {44,46,48,50}; // Pinos que estão ligados as colunas.
const char keys[row_size][col_size] = { // Mapa de teclas do teclado.
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
int RES = 10; int MOT = 9; int VAL = 8; int BOM = 7;
int cont=0; int estagio=0;
Keypad keypad = Keypad(makeKeymap(keys), row_pin, col_pin, row_size, col_size);
void setup() {
Serial.begin(9600);
pinMode(RES, OUTPUT);
pinMode(MOT, OUTPUT);
pinMode(VAL, OUTPUT);
pinMode(BOM, OUTPUT);
}
void loop() {
char key = keypad.getKey(); // Retorna a última tecla que foi apertada.
// if (key != NO_KEY) Serial.println(key); // Imprime tecla na porta serial.
switch(estagio){
case 0:
Serial.println ("APERTE 1 PARA MENU");
if (key == '1'){ estagio=1;}
break;
case 1:
Serial.println("A = PAST. LTLT"); Serial.println("B = PAST. HTST"); Serial.println("C = FERMENTADOR"); Serial.println("D = DEF. MANUAL");
if (key =='A'){ estagio = 2; cont=1;}
else if (key =='B'){ estagio = 2; cont=2;}
else if (key =='C'){ estagio = 2; cont=3;}
else if (key =='D'){ estagio = 2; cont=4;}
break;
case 2:
if(cont==1){
Serial.println("Botao A selecionado");
Serial.println("PASTEURIZACAO LTLT");
Serial.println("1=INICIAR 2=PARAR");
Serial.println("0 = VOLTAR");
if(key == '1'){digitalWrite(RES, HIGH); digitalWrite(MOT, HIGH); digitalWrite(VAL, HIGH); Serial.println("PROCESSO LTLT:ON");} // INICIA O PROCESSO
else if(key == '2'){ digitalWrite(RES, LOW);digitalWrite(MOT, LOW);digitalWrite(VAL, LOW); Serial.println ("PROCESSO LTLT:OFF");} // DESATIVA O PROCESSO
else if(key == '0'){estagio --;}
}
}
}