Created
September 19, 2019 09:20
-
-
Save suadanwar/a3b9feb461b148a119aa645feaf17073 to your computer and use it in GitHub Desktop.
This sample code is for Calculator Using 4x4 Keypad and I2C LCD on Arduino.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <LiquidCrystal_I2C.h> | |
LiquidCrystal_I2C lcd(0x27, 20, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display | |
#include <Keypad.h> | |
const byte ROWS = 4; | |
const byte COLS = 4; | |
char keys [ROWS] [COLS] = { | |
{'1', '2', '3', '+'}, | |
{'4', '5', '6', '-'}, | |
{'7', '8', '9', '*'}, | |
{'C', '0', '=', '/'} | |
}; | |
byte rowPins[ROWS] = {10, 9, 7, 6}; | |
byte colPins[COLS] = {5, 4, 3, 2}; | |
Keypad myKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); | |
boolean presentValue = false; | |
boolean next = false; | |
boolean final = false; | |
String num1, num2; | |
int answer = 0; | |
char op; | |
void setup() | |
{ | |
lcd.init(); | |
lcd.backlight(); | |
lcd.setCursor(3,0); | |
lcd.print("Maker UNO"); | |
lcd.setCursor(3,1); | |
lcd.print("Calculator"); | |
delay(3000); | |
lcd.clear(); | |
} | |
void loop() { | |
char key = myKeypad.getKey(); | |
if (key != NO_KEY && (key == '1' || key == '2' || key == '3' || key == '4' || key == '5' || key == '6' || key == '7' || key == '8' || key == '9' || key == '0')) | |
{ | |
if (presentValue != true) | |
{ | |
num1 = num1 + key; | |
int numLength = num1.length(); | |
lcd.setCursor(0, 0); | |
lcd.print(num1); | |
} | |
else | |
{ | |
num2 = num2 + key; | |
int numLength = num2.length(); | |
int numLength1 = num1.length(); | |
lcd.setCursor(1 + numLength1, 0); | |
lcd.print(num2); | |
final = true; | |
} | |
} | |
else if (presentValue == false && key != NO_KEY && (key == '/' || key == '*' || key == '-' || key == '+')) | |
{ | |
if (presentValue == false) | |
{ | |
int numLength = num1.length(); | |
presentValue = true; | |
op = key; | |
lcd.setCursor(0 + numLength, 0); | |
lcd.print(op); | |
} | |
} | |
else if (final == true && key != NO_KEY && key == '=') { | |
if (op == '+') { | |
answer = num1.toInt() + num2.toInt(); | |
} | |
else if (op == '-') { | |
answer = num1.toInt() - num2.toInt(); | |
} | |
else if (op == '*') { | |
answer = num1.toInt() * num2.toInt(); | |
} | |
else if (op == '/') { | |
answer = num1.toInt() / num2.toInt(); | |
} | |
lcd.clear(); | |
lcd.setCursor(16, 1); | |
lcd.autoscroll(); | |
lcd.print(answer); | |
lcd.noAutoscroll(); | |
} | |
else if (key != NO_KEY && key == 'C') { | |
lcd.clear(); | |
presentValue = false; | |
final = false; | |
num1 = ""; | |
num2 = ""; | |
answer = 0; | |
op = ' '; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment