#include <Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(0,1,2,3,4,5);
byte row=4;
byte col=4;
char key[4][4]={
{'1','2','3','+'},
{'4','5','6','-'},
{'7','8','9','*'},
{'C','0','E','/'}
};
byte rowpin[4]={6,7,8,9};
byte colpin[4]={10,11,12,13};
Keypad mykeypad=Keypad(makeKeymap(key),rowpin,colpin,row,col);
long num1=0;
long num2=0;
double total=0;
void setup() {
lcd.begin(16,2);
lcd.print("Enter A NUmber");
delay(1000);
lcd.clear();
}
void loop() {
char value=mykeypad.getKey();
switch (value)
{
case '0'...'9':
lcd.setCursor(0,0);
num1=num1*10+(value-'0');
lcd.print(num1);
break;
case '+':
num1=(total!=0?total:num1);
lcd.print('+');
num2=secondNumber();
total=num1+num2;
lcd.setCursor(0,1);
lcd.print(total);
num1=num2=0;
break;
case '-':
num1=(total!=0?total:num1);
lcd.print('-');
num2=secondNumber();
total=num1-num2;
lcd.setCursor(0,1);
lcd.print(total);
num1=num2=0;
break;
case '*':
num1=(total!=0?total:num1);
lcd.print('*');
num2=secondNumber();
total=num1*num2;
lcd.setCursor(0,1);
lcd.print(total);
num1=num2=0;
break;
case '/':
num1=(total!=0?total:num1);
lcd.print('/');
num2=secondNumber();
total=num1/num2;
lcd.setCursor(0,1);
lcd.print(total);
num1=num2=0;
break;
case 'C':
total=num1=num2=0;
lcd.clear();
break;
}
long secondNumber() {
while(1)
{
char value=mykeypad.getKey();
if (value>='0' && value<='9')
{
num2=num2*10+(value-'0');
lcd.setCursor(7,0);
lcd.print(num2);
}
if (value=='E')
break;
}
return(num2);
}