#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
const byte ROW_NUM = 4; // vier Reihen
const byte COL_NUM = 4; // vier Spalten
char keys[ROW_NUM][COL_NUM] = {
{'1','2','3','+'},
{'4','5','6','-'},
{'7','8','9','*'},
{'#','0','=','/'}
};
byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte pin_column[COL_NUM] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COL_NUM );
LiquidCrystal_I2C lcd(0x27, 16, 2);
double num1, num2;
char op, key;
bool num1Complete = false;
void setup(){
lcd.init();
}
void loop(){
key = keypad.getKey();
if (key){
if ('0' <= key && key <= '9') {
if (!num1Complete) {
num1 = num1 * 10 + (key - '0');
lcd.print(key);
} else {
num2 = num2 * 10 + (key - '0');
lcd.print(key);
}
} else if (key == '+' || key == '-' || key == '*' || key == '/') {
num1Complete = true;
op = key;
lcd.print(key);
} else if (key == '=') {
lcd.clear();
switch(op) {
case '+': lcd.print(num1 + num2); break;
case '-': lcd.print(num1 - num2); break;
case '*': lcd.print(num1 * num2); break;
case '/': lcd.print(num1 / num2); break;
}
num1 = num2 = 0;
num1Complete = false;
}
}
}