Basically I want to create a serial communication calculator on my arduino that can handle simple addition, subtraction, multiplication and division. The project doesn't seem to work. Can someone explain why?
Code: /* The Arduino serial calculator (rev.1)
- Main function: Calculate addition (+), subtraction (-),
- multiplication(*) and division(/)
*/
//defining variables
long number1; // - first number of calculation
// - sent through the Serial Monitor
long number2; // - second number of calculator, same as number1
//long variables are able to store big numbers
char calSignal; //character variable created to store
//calculation signals
long result; //result of calculation
//this is a long variable, so it can result in big numbers
void setup() {
Serial.begin(9600);
Serial.println("Hello!"); //tests serial communication
Serial.println("Please insert your first number."); //for easier debugging
Serial.println(); //leaves a clear row
}
void loop() {
while(Serial.available() > 0) {
number1 = Serial.parseInt(); //parseInt() can store 2 digits (i.e: "23")
Serial.println("Please insert your function");
Serial.println();
while(Serial.available() = "+" = "-" = "*" = "/") {
calSignal = Serial.read();
Serial.println("Please insert your second number");
Serial.println();
while(Serial.available() > 0) {
number2 = Serial.parseInt();
Result(); //a custom function to solve the calculation (see below)
Serial.print("Result = ");
Serial.println(result); //prints out the result
Serial.println(); //leaves a clear row
Serial.println("Please insert your first number");
Serial.println(); //leaves a clear row
}
}
}
}
void Result() {
switch(calSignal) { //a list of functions that the calculator can handle
case '+': //addition function
result = number1 + number2;
break;
case '-': //subtraction function
result = number1 - number2;
break;
case '*': //multiplication function
result = number1 * number2;
break;
case '/': //division function
result = number1 / number2;
break;
default:
Serial.println("Equation is invalid."); //displays an error for the user to see
Serial.println(); //leaves an empty row
result = 0;
}
}
Thank you.
-Keanny