Buenos días. Estoy programando una calculadora con un teclado matricial. Las operaciones y todo me lo hace bien, pero en el momento en que acaba de hacer la operación, me gustaría poder borrar lo que aparece en la pantalla LCD. Lo he intentado hacer con un botón aparte, el cual al presionarlo se borra lo que hay en pantalla. Lo borra de forma correcta, pero, después de hacer la limpieza de la LCD, no me deja volver a hacer operaciones. ¿Alguna idea de como lo puedo hacer?
#include <LiquidCrystal.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
const byte files = 4; //cuatre files.
const byte columnes = 4; //cuatre columnes.
char tecla[files][columnes] = {
{'1','2','3','A'},
{'4','5','6','+'},
{'7','8','9','-'},
{'*','0','=','/'}
};
byte pin_files[files] = {11,10,9,8}; //conectar-se a les potes de sortida de la fila del teclat.
byte pin_columnes[columnes] = {A1,A2,A3,A0}; //conectar-se a les potes de les columnes del teclat.
Keypad keypad = Keypad( makeKeymap(tecla), pin_files, pin_columnes, files, columnes );
LiquidCrystal_I2C lcd(0x27,16,2);
String llegeix_cadena1,llegeix_cadena2;
byte compta=0;
char a;
long dada1,dada2,resposta1;
float resposta2;
void setup(){
lcd.begin(16,2);
lcd.noCursor();
lcd.backlight();
Serial.begin(9600);
pinMode(10,INPUT);
pinMode(11,INPUT);
pinMode(12,INPUT);
pinMode(13,INPUT);
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(4,INPUT);
pinMode(5,INPUT);
pinMode(13,OUTPUT);
}
void loop(){
char key = keypad.getKey();
if (digitalRead(5) == HIGH){
lcd.clear();
}
else{
/*if((key=='A')&&(compta==0)){
llegeix_cadena2="";
llegeix_cadena1="";
dada1=0;
dada2=0;
compta=0;
resposta1=0;
resposta2=0;
//Serial.clear();*/
if (key=='0'||key=='1'||key=='2'||key=='3'||key=='4'||key=='5'||key=='6'||key=='7'||key=='8'||key=='9'){
if(compta==0){
lcd.print(key);
llegeix_cadena1+=key;
dada1=llegeix_cadena1.toInt();
}
else if(compta==1){
lcd.print(key);
llegeix_cadena2+=key;
dada2=llegeix_cadena2.toInt();
}
}
if((key=='+'||key=='-'||key=='*'||key=='/')&&(compta==0)){
compta++;
a=key;
lcd.print(a);
}
if(key=='=' && a=='+'){
compta++;
lcd.setCursor(0,1);
resposta1 = dada1 + dada2;
lcd.print("RPT=");
lcd.print(resposta1);
resposta1 == 0;
}
if(key=='=' && a=='-'){
compta++;
lcd.setCursor(0,1);
resposta1 = dada1 - dada2;
lcd.print("RPT=");
lcd.print(resposta1);
resposta1 == 0;
}
if(key=='='&& a=='*'){
compta++;
lcd.setCursor(0,1);
resposta1 = dada1 * dada2;
lcd.print("RPT=");
lcd.print(resposta1);
resposta1 == 0;
}
if(key=='='&&a=='/'){
compta++;
lcd.setCursor(0,1);
lcd.print("RPT=");
resposta2 = ( float(dada1) / float(dada2) );
lcd.print(resposta2);
resposta2 == 0;
}
}
}