#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', '+'},
{'4', '5', '6', '-'},
{'7', '8', '9', '*'},
{'C', '0', '=', '/'}
};
byte colPins[COLS] = {5,4,3,2};
byte rowPins[ROWS] = {9,8,7,6};
String operation = "";
int number = 0;
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
int Num1, Num2, Number, vysledok;
char key, action;
boolean result = false;
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(3,0);
lcd.print("Vitajte v");
lcd.setCursor(3,1);
lcd.print("kalkulacke");
delay(2000);
lcd.clear();
}
void loop() {
key = keypad.getKey();
if (key != NO_KEY) {
DetectButtons();
}
if (result == true) {
CalculateResult();
}
DisplayResult();
}
void DetectButtons() {
if (key == 'C') {
lcd.clear();
lcd.print(vysledok);
}
if (key == '0') {
Number = 0;
}
if (key == '1') {
Number = 1;
}
if (key == '2') {
Number = 2;
}
if (key == '3') {
Number = 3;
}
if (key == '4') {
Number = 4;
}
if (key == '5') {
Number = 5;
}
if (key == '6') {
Number = 6;
}
if (key == '7') {
Number = 7;
}
if (key == '8') {
Number = 8;
}
if (key == '9') {
Number = 9;
}
if (key == '=') {
Num2 = Number;
Number = 0;
result = true;
}
if (key == '+' || key == '-' || key == '*' || key == '/') {
Num1 = Number;
Number = 0;
if (key == '+') {
action = '+';
}
if (key == '-') {
action = '-';
}
if (key == '*') {
action = '*';
}
if (key == '/') {
action = '/';
}
}
}
void CalculateResult() {
if (action == '+') {
vysledok = Num1 + Num2;
}
if (action == '-') {
vysledok = Num1 - Num2;
}
if (action == '*') {
vysledok = Num1 * Num2;
}
if (action == '/') {
vysledok = Num1 / Num2;
}
}
void DisplayResult() {
lcd.setCursor(0,0);
lcd.print(Num1);
lcd.print(action);
lcd.print(Num2);
if (result == true) {
lcd.print(" = ");
lcd.print(vysledok);
}
}