Codes Final
Codes Final
h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <math.h>
LiquidCrystal_I2C lcd(0x27,20,4);
void setup()
{
Serial.begin(9600);
lcd.init();
lcd.backlight();
operation_information();
lcd.print("Sci-Calculator");
delay(1000);
lcd.clear();
}
void loop()
{
status = false;
int enter_val = getNumber();
Serial.print("Option chosen :");
Serial.print(enter_val);
Serial.println();
lcd.clear();
lcd.print("Option chosen :");
lcd.setCursor(0,2);
lcd.print(enter_val);
delay(2000);
//Call BODMAS function
if(enter_val == 11){
BODMAS();
}
else{
show_val = "";
prev_val = process(enter_val,status);
while(1){
status = true;
//New computation
Serial.println("Press D to start new computation.");
show_val = "";
int enter_val1 = getNumber();
if(enter_val1==0){
Serial.println("Starting new computation.");
break;
}
else{
Serial.print("Option chosen :");
Serial.println(enter_val);
lcd.clear();
show_val = "";
String myString = String(prev_val);
getshow_val(myString);
lcd.print(show_val);
prev_val = process(enter_val1,status);
}
}
}
delay(3000);
lcd.clear();
show_val = "";
}
//Display Operation
String operation(int num1)
{
String ret_val = "";
while(1){
if (num1==1){
ret_val = "+";
}
else if (num1==2){
ret_val = "-";
}
else if (num1==3){
ret_val = "*";
}
else if (num1==4){
ret_val = "/";
}
else if (num1==5){
ret_val = "sin :";
}
else if (num1==6){
ret_val = "cos :";
}
else if (num1==7){
ret_val = "Sqrt :";
}
else if (num1==8){
ret_val = "Log10 :";
}
else if (num1==9){
ret_val = "exp :";
}
else if(num1==10){
ret_val = "Square :";
}
break;
}
getshow_val(ret_val);
return ret_val;
}
//Division
float result = val1 / val2;
lcd.print(result);
Serial.println("Result :");
Serial.println(result);
return result;
}
else if(num==5){
lcd.clear();
show_val = "";
String oper = operation(num);
lcd.clear();
Serial.println(oper);
if(status==true){
String myString = String(val1);
getshow_val(myString);
lcd.print(show_val);
}
else{
Serial.println("Enter the number.");
val1 = (float)getNumber();
Serial.println(val1);
}
lcd.setCursor(0,2);
//Sine function
float result = sin(val1);
lcd.print(result);
Serial.println("Result :");
Serial.println(result);
return result;
}
else if(num==6){
lcd.clear();
show_val = "";
String oper = operation(num);
lcd.clear();
Serial.println(oper);
if(status==true){
String myString = String(val1);
getshow_val(myString);
lcd.print(show_val);
}
else{
Serial.println("Enter the number.");
val1 = (float)getNumber();
Serial.println(val1);
}
lcd.setCursor(0,2);
//Cosine function
float result = cos(val1);
lcd.print(result);
Serial.println("Result :");
Serial.println(result);
return result;
}
else if(num==7){
lcd.clear();
show_val = "";
String oper = operation(num);
lcd.clear();
Serial.println(oper);
if(status==true){
String myString = String(val1);
getshow_val(myString);
lcd.print(show_val);
}
else{
Serial.println("Enter the number.");
val1 = (float)getNumber();
Serial.println(val1);
}
lcd.setCursor(0,2);
//Tangent function
float result = tan(val1);
lcd.print(result);
Serial.println("Result :");
Serial.println(result);
return result;
}
else if(num==8){
lcd.clear();
show_val = "";
String oper = operation(num);
lcd.clear();
Serial.println(oper);
if(status==true){
String myString = String(val1);
getshow_val(myString);
lcd.print(show_val);
}
else{
Serial.println("Enter the number.");
val1 = (float)getNumber();
Serial.println(val1);
}
lcd.setCursor(0,2);
//Taking input
int getNumber()
{
int second = 0;
while(1)
{
char Key = keypad.getKey();
if(Key >= '0' && Key <= '9')
{
second = second * 10 + (Key - '0');
lcd.clear();
String myString = String(Key);
getshow_val(myString);
lcd.print(show_val);
}
if(Key == 'D') {
break;
}
}
return second;
}