Calculadora arduino

Boa noite pessoal,

Sou iniciante em programação e estou tentando implementar uma calculadora no arduino, usando um teclado matricial. O código abaixo está funcional, porém preciso implementar esses outros pontos (1 a 4) e não estou conseguindo.

Alguém poderia me orientar, como devo fazer?

Obrigado!

1. Se a primeira entrada for ‘’, tudo o que for digitado até um outro '’ comporá um operando.
2. Após o operador aritmético, o sistema receberá outro operando e, finalmente, ao receber o segundo ‘’ do segundo operando, aguardará o ingresso de um sinal de igualdade ‘=’ que o fará calcular o resultado da operação.
3. Se o resultado for válido, ele ficará armazenado na primeira variável, de forma que possa ser utilizado para nova operação
4. Se, após um cálculo, for digitado um '
’, o operando será considerado como inicial

Código

#include <LiquidCrystal.h>
#include <Keypad.h>

const byte linhas = 4; //quatro filas.
const byte colunas = 4; //quatro colunas.

char tecla[linhas][colunas] = {
{‘1’,‘2’,‘3’,‘A’},
{‘4’,‘5’,‘6’,’+’},
{‘7’,‘8’,‘9’,’-’},
{’*’,‘0’,’=’,’/’}
};

byte pinLinhas[linhas] = {7, 6, 5, 4}; //define a conexao do teclado no arduino
byte pinColunas[colunas] = {3, 2, A1, A0}; //define a conexao do teclado no arduino

Keypad keypad = Keypad( makeKeymap(tecla), pinLinhas, pinColunas, linhas, colunas);

LiquidCrystal lcd(8,9,10,11,12,13); //define a conexao do LCD no arduino

String leitura1, leitura2;

byte numero = 0; // variavel para incrementar
byte digito = 5; //quantidade de digitos para a operacao
byte contar=0;

char a;
long num1,num2,result1;
double num3,num4,result2;

void setup(){

lcd.begin(16,2);

}

void loop(){
char key = keypad.getKey();

if (key==‘0’||key==‘1’||key==‘2’||key==‘3’||key==‘4’||key==‘5’||key==‘6’||key==‘7’||key==‘8’||key==‘9’ && numero <= digito){

numero++;

if(contar==0 && numero <= digito){
lcd.print(key);
leitura1+=key;
num1=leitura1.toInt();
}

else if(contar==1 && numero <= digito){
lcd.print(key);
leitura2+=key;
num2=leitura2.toInt();
}

}

if(key==‘A’){

leitura2="";
leitura1="";
num1=0;
num2=0;
num3=0;
num4=0;
numero = 0;
contar=0;
result1=0;
result2=0;
lcd.clear();
}
else if(key==’=’&& a==’+’){
numero = 0;
contar++;
lcd.setCursor(0,2);
result1=num1+num2;
lcd.print(“Result=”);
lcd.print(result1);
}

else if(key==’=’&& a==’-’){
numero = 0;
contar++;
lcd.setCursor(0,2);
result1=num1-num2;
lcd.print(“Result=”);
lcd.print(result1);
}
else if(key==’=’&& a==’’){
numero = 0;
contar++;
lcd.setCursor(0,2);
result1=num1
num2;
lcd.print(“Result=”);
lcd.print(result1);
}
else if(key==’=’&& a==’/’){
numero = 0;
contar++;
lcd.setCursor(0,2);
num3=num1;
num4=num2;
lcd.print(“Result=”);
result2=(num3/num4);
lcd.print(result2);
}

else if((key==’+’||key==’-’||key==’*’||key==’/’)&&(contar==0)){

numero = 0;
contar++;
a=key;
lcd.print(a);
}
}