[DUVIDA] LCD com teclado de membrana

Olá amigos.

Estou querendo fazer um projeto onde quando iniciar, me mostrará uma tela de boas-vindas, e que quando eu pressionar um botão do meu teclado (nesse caso "A") ele me abre um menu com as opções de configuração do projeto.
Mas quando eu mando ele "printar" um novo valor, ele substitui por outro já definido anteriormente. O meu código está abaixo.

#include <LiquidCrystal.h>//biblioteca do lcd monocromatico

LiquidCrystal L(8,9,10,11,12,13);//gera cópia da biblioteca para parametros

char tecla=100;//variável do teclado matricial

void setup()
{
L.begin(16,2);//configura colunas e linhas do LCD
//linhas do teclado matricial
pinMode(0,OUTPUT);
pinMode(1,OUTPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
//coluna do teclado
pinMode(4,INPUT); digitalWrite(4,HIGH);//ativando resistor de pull up
pinMode(5,INPUT); digitalWrite(5,HIGH);//ativando resistor de pull up
pinMode(6,INPUT); digitalWrite(6,HIGH);//ativando resistor de pull up
pinMode(7,INPUT); digitalWrite(7,HIGH);//ativando resistor de pull up

}
void loop()
{
teclado();
if(tecla=='1')
{
L.setCursor(0,0);L.print("SAO PAULO ");
}
if(tecla=='0')
{
L.setCursor(0,0);L.print("PALMEIRAS");
}
L.setCursor(0,0);L.print("Bem vindo");
L.setCursor(0,1);L.print("Projeto integrador");
delay (3000); L.clear();
L.setCursor(3,0); L.print("Smart Grid");
L.setCursor(0,1);L.print("Rede Inteligente");
delay (3000); L.clear();
L.setCursor(0,0); L.print("Renato Carvalho");
L.setCursor(1,1);L.print("RA: xxxxxxxxx");
delay (3000); L.clear();
L.setCursor(2,0); L.print("Pressione 'A'");
L.setCursor(0,1);L.print("para abrir menu");
delay (3000); L.clear();

}

//Minhas Funções******

void teclado()
{
//varredura da primeira linha
digitalWrite(0,LOW); digitalWrite(1,HIGH);
digitalWrite(2,HIGH); digitalWrite(3,HIGH);
if(digitalRead(4)==0){tecla='1';} //primeira coluna - o número'1'representa a tabela char
if(digitalRead(5)==0){tecla='2';} //segunda coluna
if(digitalRead(6)==0){tecla='3';} //terceira coluna
if(digitalRead(7)==0){tecla='A';} //quarta coluna
digitalWrite(0,HIGH);
//*******************************************************
//varredura da segunda linha
digitalWrite(1,LOW);
if(digitalRead(4)==0){tecla='4';} //primeira coluna
if(digitalRead(5)==0){tecla='5';} //segunda coluna
if(digitalRead(6)==0){tecla='6';} //terceira coluna
if(digitalRead(7)==0){tecla='B';} //quarta coluna
digitalWrite(1,HIGH);
//*******************************************************
//varredura da terceira linha
digitalWrite(2,LOW);
if(digitalRead(4)==0){tecla='7';} //primeira coluna
if(digitalRead(5)==0){tecla='8';} //segunda coluna
if(digitalRead(6)==0){tecla='9';} //terceira coluna
if(digitalRead(7)==0){tecla-'C';} //quarta coluna
digitalWrite(2,HIGH);
//*******************************************************
//varredura da quarta linha
digitalWrite(3,LOW);
if(digitalRead(4)==0){tecla='';} //primeira coluna
if(digitalRead(5)==0){tecla='0';} //segunda coluna
if(digitalRead(6)==0){tecla='#';} //terceira coluna
if(digitalRead(7)==0){tecla='D';} //quarta coluna
digitalWrite(3,HIGH);
//
******************************************************

}

E este é o meu cógido, mas quando simulado, eu pressiono a tecla 1 e ele mostra a variável de teste "SAO PAULO" mas é imediatamente substituida pelo texto de boas vindas.

Agradeço desde já.
Batmano.

No entanto, a palavra PALMEIRAS não aparece... correcto?

Já viste onde estão as tuas chavetas??

Ele chega a mostrar "palmeiras" mas é substituido pelo texto de boas vindas logo em seguida.

Cara todas as vezes que você manda verificar o valor da tecla, o programa trata esse valor e logo em seguida você manda ele escrever a tela de boas vindas. Tente alterar essa parte.

Testa aí!!

#include <LiquidCrystal.h>//biblioteca do lcd monocromatico

LiquidCrystal L(8,9,10,11,12,13);//gera cópia da biblioteca para parametros

char tecla=100;//variável do teclado matricial

int tempoEspera = 0;

bollean telaInicial = true;

void setup()
{
  L.begin(16,2);//configura colunas e linhas do LCD
  //linhas do teclado matricial
  pinMode(0,OUTPUT);
  pinMode(1,OUTPUT);
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
//coluna do teclado
  pinMode(4,INPUT); digitalWrite(4,HIGH);//ativando resistor de pull up
  pinMode(5,INPUT); digitalWrite(5,HIGH);//ativando resistor de pull up
  pinMode(6,INPUT); digitalWrite(6,HIGH);//ativando resistor de pull up
  pinMode(7,INPUT); digitalWrite(7,HIGH);//ativando resistor de pull up

//*********** TELA DE BOAS VINDAS ************************************
  L.setCursor(0,0);
  L.print("Bem vindo");
  L.setCursor(0,1);
  L.print("Projeto integrador");
  delay (3000);
  
  L.clear();
  L.setCursor(3,0);
  L.print("Smart Grid");
  L.setCursor(0,1);
  L.print("Rede Inteligente");
  delay (3000); 
 
  L.clear(); 
  L.setCursor(0,0); 
  L.print("Renato Carvalho");
  L.setCursor(1,1);
  L.print("RA: xxxxxxxxx"); 
  delay (3000); 
  
  L.clear();
  L.setCursor(2,0); 
  L.print("Pressione 'A'");
  L.setCursor(0,1);
  L.print("para abrir menu");
  delay (3000); 
  

}
void loop()
{
  teclado();
  if(tecla=='1')
  {
    L.clear();L.setCursor(0,0);L.print("SAO PAULO");
  }
  else if(tecla=='0')
  {
    L.clear();L.setCursor(0,0);L.print("PALMEIRAS");
  }
  else if( (tecla='100') && (millis() > (tempoEspera+2000) ) && (telaInicial == false) ) {
    menuInicial();
    telaInicial == true;
  } 
 
 
}

//***********Minhas Funções*****************

void teclado()
{
//varredura da primeira linha
  digitalWrite(0,LOW); digitalWrite(1,HIGH);
  digitalWrite(2,HIGH); digitalWrite(3,HIGH);
  if(digitalRead(4)==0){tecla='1';} //primeira coluna - o número'1'representa a tabela char
  else if(digitalRead(5)==0){tecla='2';} //segunda coluna
  else if(digitalRead(6)==0){tecla='3';} //terceira coluna
  else if(digitalRead(7)==0){tecla='A';} //quarta coluna
  else { tecla = '100';}
  digitalWrite(0,HIGH);
//*******************************************************
//varredura da segunda linha
  digitalWrite(1,LOW);
  if(digitalRead(4)==0){tecla='4';} //primeira coluna
  else if(digitalRead(5)==0){tecla='5';} //segunda coluna
  else if(digitalRead(6)==0){tecla='6';} //terceira coluna
  else if(digitalRead(7)==0){tecla='B';} //quarta coluna
  else { tecla = '100';}
  digitalWrite(1,HIGH);
//*******************************************************
//varredura da terceira linha
  digitalWrite(2,LOW);
  if(digitalRead(4)==0){tecla='7';} //primeira coluna
  else if(digitalRead(5)==0){tecla='8';} //segunda coluna
  else if(digitalRead(6)==0){tecla='9';} //terceira coluna
  else if(digitalRead(7)==0){tecla-'C';} //quarta coluna
  else { tecla = '100';}
  digitalWrite(2,HIGH);
//*******************************************************
//varredura da quarta linha
  digitalWrite(3,LOW);
  if(digitalRead(4)==0){tecla='*';} //primeira coluna
  else if(digitalRead(5)==0){tecla='0';} //segunda coluna
  elseif(digitalRead(6)==0){tecla='#';} //terceira coluna
  else if(digitalRead(7)==0){tecla='D';} //quarta coluna
  else { tecla = '100';}
  digitalWrite(3,HIGH);
//******************************************************* 

  tempoEspera = millis();
  telaInicial = false;
  
 
}

void menuIncical(){
  L.clear();
  L.setCursor(2,0); 
  L.print("Pressione 'A'");
  L.setCursor(0,1);
  L.print("para abrir menu");

}

Testa aí e me fala se era isso que você queria.