Вот что получилось:

Пояснение:
КАК РАБОТАЕТ
Очень просто!
После загрузки скетча видим на экране:

Далее вводим первое число, например, 726:

Затем, операцию, например, умножить:

Затем, второе число, например, 536:

И жмем кнопку #:

Все очень просто.
Если сделали ошибку, то можно сбросить первое и второе число двойным нажатием на любую операцию.
Ну а теперь самое сладкое - скетчи!
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x3F, 16, 2); // Устанавливаем дисплей
unsigned int Wow = 0, Wow1 = 0;
float D1 = 0, D2 = 0, D3 = 0;
unsigned int Index = 1;
int Operaciya = 0;
String Oper = " ";
unsigned int WhatKeyPressed();
// Кнопка А - это +
// Кнопка B - это -
// Кнопка C - это *
// Кнопка D - это /
// Кнопка # - это =
// Что делать с кнопкой * - еще не решил
void setup() {
lcd.init();
lcd.backlight(); // Включаем подсветку дисплея
lcd.begin(16, 2);
lcd.clear();
// Пишем Calculator
lcd.setCursor(0, 0); lcd.print(F("Calculator"));
lcd.setCursor(0, 1); lcd.print(F("READY!!!"));
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(13, OUTPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
Serial.begin(9600);
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(13, 0);
// Притягиваем к нулю входы, чтобы не использовать внешние резисторы
// Подсмотрел тут: http://www.robots4life.ru/arduino-keypad - на нано не работает! На уно - не проверял.
//digitalWrite(6, LOW);
//digitalWrite(7, LOW);
//digitalWrite(8, LOW);
//digitalWrite(9, LOW);
Serial.println("Please, Press any Key!");
}
void loop() {
Wow1 = WhatKeyPressed();
if (Wow1 > 0)
digitalWrite(13, 1);
else
digitalWrite(13, 0);
if (Wow1 == Wow)
return;
Wow = Wow1;
if (Wow == 0)
return;
// Serial.print(Wow);
// Serial.print(" ");
// Serial.print(Index);
// Serial.print(" ");
float d = 0;
switch (Wow) {
case 1: d = 1; break;
case 2: d = 4; break;
case 4: d = 7; break;
case 8: d = 115; break; // Минус?
case 4096: d = 111; break; // +
case 8192: d = 112; break; // -
case 16384: d = 113; break; // *
case 32768: d = 114; break; // /
case 16: d = 2; break;
case 32: d = 5; break;
case 64: d = 8; break;
case 128: d = 0; break;
case 256: d = 3; break;
case 512: d = 6; break;
case 1024: d = 9; break;
case 2048: d = 110; break; // =
}
if (d >= 111 and d <= 114) {
Operaciya = d;
switch (Operaciya) {
case 111: Serial.println("+"); Oper = "+"; break;
case 112: Serial.println("-"); Oper = "-"; break;
case 113: Serial.println("*"); Oper = "*"; break;
case 114: Serial.println("/"); Oper = "/"; break;
}
D2 = D1;
D1 = 0;
lcd.setCursor(0, 0); lcd.print(" ");
lcd.setCursor(0, 0); lcd.print(String(D2) + Oper + String(D1));
return;
}
if (d == 110) {
switch (Operaciya) {
case 111: D3 = D2 + D1; Serial.println(String(D2) + "+" + String(D1) + "=" + String(D3)); break;
case 112: D3 = D2 - D1; Serial.println(String(D2) + "-" + String(D1) + "=" + String(D3)); break;
case 113: D3 = D2 * D1; Serial.println(String(D2) + "*" + String(D1) + "=" + String(D3)); break;
case 114: D3 = D2 / D1; Serial.println(String(D2) + "/" + String(D1) + "=" + String(D3)); break;
}
D1 = 0;
D2 = 0;
Operaciya = 0;
Oper = " ";
lcd.setCursor(0, 1);
lcd.print(String(D3)+" ");
D3=0;
return;
}
D1 = D1 * 10.0;
D1 = D1 + d;
Serial.println(D1);
lcd.setCursor(0, 0); lcd.print(" ");
lcd.setCursor(0, 0); lcd.print(String(D2) + Oper + String(D1));
lcd.setCursor(0, 1);
lcd.print(String(D3)+" ");
delay(50);
}
unsigned int WhatKeyPressed() {
int Knopka[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int Index = 0;
int keyPress = 0;
unsigned int Wow = 0;
for (int r = 2; r < 6; r++) {
// Переводим линии подачи сигнала скана в "неопределенное состояние"
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
// Переводим одну линию подачи сигнала скана в 1.
pinMode(r, OUTPUT);
digitalWrite(r, 1);
// Последовательно читаем нажатые кнопки на этой линии
for (int i = 6; i < 10; i++) {
if (digitalRead(i)) {
// Serial.println(String(r) + "." + String(i));
Knopka[Index] = 1;
keyPress = 1;
}
Index++;
}
}
if (keyPress) {
for (int q = 0; q < 16; q++) {
Wow = Wow + Knopka[q] * ( 1 << (15 - q) );
//Serial.print(Knopka[q]);
}
//Serial.println(" " + String(Wow));
}
return Wow;
}