Created
February 6, 2018 04:13
-
-
Save debajyotisarkar/6d7371dcaa17c50346677fce6af2801f to your computer and use it in GitHub Desktop.
This file contains 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.h> | |
#include <Keypad.h> | |
LiquidCrystal lcd(0, 1, 5, 4, 3, 2); | |
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] = {6 ,7 ,8 ,9}; | |
byte colPins[COLS] = {10, 11, 12, 13}; | |
Keypad myKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); | |
boolean presentValue = false; | |
boolean next = false; | |
boolean final = false; | |
String num1, num2; | |
int answer; | |
char op; | |
void setup() | |
{ | |
lcd.begin(16,2); | |
lcd.setCursor(0,0); | |
lcd.print("DEBAJYOTI SARKAR "); | |
lcd.setCursor(0,1); | |
lcd.print(" Presents "); | |
delay(5000); | |
lcd.setCursor(0,0); | |
lcd.print(" Arduino based "); | |
lcd.setCursor(0,1); | |
lcd.print(" Calculator" ); | |
delay(5000); | |
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(15 - numLength, 0); //to adjust one whitespace for operator | |
lcd.print(num1); | |
} | |
else | |
{ | |
num2 = num2 + key; | |
int numLength = num2.length(); | |
lcd.setCursor(15 - numLength, 1); | |
lcd.print(num2); | |
final = true; | |
} | |
} | |
else if (presentValue == false && key != NO_KEY && (key == '/' || key == '*' || key == '-' || key == '+')) | |
{ | |
if (presentValue == false) | |
{ | |
presentValue = true; | |
op = key; | |
lcd.setCursor(15,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(15,0); | |
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