0% found this document useful (0 votes)
12 views8 pages

Codes Final

This Arduino code defines functions for a scientific calculator using a keypad and LCD display. It includes functions for taking numeric input, displaying the operation and result on the LCD, and performing calculations for common operations like addition, subtraction, multiplication, division, exponents, logarithms, and trigonometric functions. The main loop handles selecting and processing the desired operation.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views8 pages

Codes Final

This Arduino code defines functions for a scientific calculator using a keypad and LCD display. It includes functions for taking numeric input, displaying the operation and result on the LCD, and performing calculations for common operations like addition, subtraction, multiplication, division, exponents, logarithms, and trigonometric functions. The main loop handles selecting and processing the desired operation.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 8

#include <Wire.

h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <math.h>

LiquidCrystal_I2C lcd(0x27,20,4);

const byte ROWS = 4;


const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {5, 4, 3, 2};
byte colPins[COLS] = {9,8, 7, 6};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

String show_val = "";


int prev_val = 0;
bool status = false;
char oper_vector[5] = {'+','-','*','/','%'};

void setup()
{
Serial.begin(9600);
lcd.init();
lcd.backlight();
operation_information();
lcd.print("Sci-Calculator");
delay(1000);
lcd.clear();
}

//Option No. for Operations


void operation_information()
{
Serial.println("Options :");
Serial.println(" 1. Addition");
Serial.println(" 2. Subtraction");
Serial.println(" 3. Multiply");
Serial.println(" 4. Division");
Serial.println(" 5. Sin");
Serial.println(" 6. Cos");
Serial.println(" 7. Tan");
Serial.println(" 8. Sqrt of number");
Serial.println(" 9. Log10");
Serial.println(" 10. Exp");
Serial.println(" 11. Square of number");
Serial.println(" ");
}

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;
}

//Main computation (Option 1 to 10)


float process(int num,bool status){
float val1 = prev_val;
if(num==1){
if(status==true){
}
else{
lcd.clear();
Serial.println("Enter the first number.");
val1 = (float)getNumber();
Serial.println(val1);
}
String oper = operation(num);
lcd.clear();
lcd.print(show_val);
Serial.println(oper);
Serial.println("Enter second number.");
float val2 = (float)getNumber();
Serial.println(val2);
lcd.clear();
lcd.print(show_val);
lcd.setCursor(0,2);
//Addition
float result = val1 + val2;
lcd.print(result);
Serial.println("Result :");
Serial.println(result);
return result;
}
else if(num==2){
if(status==true){
}
else{
lcd.clear();
Serial.println("Enter the first number.");
val1 = (float)getNumber();
Serial.println(val1);
}
String oper = operation(num);
lcd.clear();
lcd.print(show_val);
Serial.println(oper);
Serial.println("Enter second number.");
float val2 = (float)getNumber();
Serial.println(val2);
lcd.clear();
lcd.print(show_val);
lcd.setCursor(0,2);
//Subtraction
float result = val1 - val2;
lcd.print(result);
Serial.println("Result :");
Serial.println(result);
return result;
}
else if(num==3){
if(status==true){
}
else{
lcd.clear();
Serial.println("Enter the first number.");
val1 = (float)getNumber();
Serial.println(val1);
}
String oper = operation(num);
lcd.clear();
lcd.print(show_val);
Serial.println(oper);
Serial.println("Enter second number.");
float val2 = (float)getNumber();
Serial.println(val2);
lcd.clear();
lcd.print(show_val);
lcd.setCursor(0,2);
//Multiplication
float result = val1 * val2;
lcd.print(result);
Serial.println("Result :");
Serial.println(result);
return result;
}
else if(num==4){
if(status==true){
}
else{
lcd.clear();
Serial.println("Enter the first number.");
val1 = getNumber();
Serial.println(val1);
}
String oper = operation(num);
lcd.clear();
lcd.print(show_val);
Serial.println(oper);
Serial.println("Enter second number.");
int val2 = getNumber();
Serial.println(val2);
lcd.clear();
lcd.print(show_val);
lcd.setCursor(0,2);

//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);

//Square root of a number


float result = sqrt(val1);
lcd.print(result);
Serial.println("Result :");
Serial.println(result);
return result;
}
else if(num==9){
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 = getNumber();
Serial.println(val1);
}
lcd.setCursor(0,2);
//log10(number)
float result = log10((float)val1);
lcd.print(result);
Serial.println("Result :");
Serial.println(result);
return result;
}
else if(num==10){
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 = getNumber();
Serial.println(val1);
}
lcd.setCursor(0,2);
//e^number
float result = exp((float)val1);
lcd.print(result);
Serial.println("Result :");
Serial.println(result);
return result;
}
else if(num==11){
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 = getNumber();
Serial.println(val1);
}
lcd.setCursor(0,2);
//Square of a number
float result = square((float)val1);
lcd.print(result);
Serial.println("Result :");
Serial.println(result);
return result;
}
}

void getshow_val(String str){


show_val = show_val + str;
}

//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;
}

You might also like