#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
const byte ROWS = 4; //
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; // - detail arduino - pin detail -
byte colPins[COLS] = {5, 4, 3, 2};
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup(){
Serial.begin(9600);
lcd.init();
lcd.backlight();
}
void loop(){
static int a=0;
static int c=0;
static int r=0;
lcd.setCursor(c,r);
static char ch;
static int b=0;
static int x=0;
char customKey = customKeypad.getKey();
if(customKey) // get the display on serial monitor
{
if(customKey=='A') // * symbol is used as enter key --
{
ch='+';
b=a;
lcd.init();
a=0;
c=0;
lcd.setCursor(0,0);
}
else
if(customKey=='B') // * symbol is used as enter key --
{
ch='-';
b=a;
lcd.init();
a=0;
c=0;
lcd.setCursor(0,0);
}
else
if(customKey=='*')
{
if(ch=='+')
{
x=a+b;
lcd.setCursor(0,0);
lcd.print("sum - ");
lcd.setCursor(0,1);
lcd.print(x);
}
if(ch=='-')
{
x=b-a;
lcd.setCursor(0,0);
lcd.print("subtraction - ");
lcd.setCursor(0,1);
lcd.print(x);
}
}
else
if(customKey=='#')
{
lcd.init();
a=0;
b=0;
c=0;
r=0;
x=0;
}
else
{
a=a*10+customKey-'0'; // -'0' method is char to int conversion
lcd.init();
lcd.print(a);
c++;
}
}
}