Go Down

Topic: Calculadora arduino (Read 62 times) previous topic - next topic

labC

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);
  }
}

Go Up