Operaciones en la calculadora arduino

Buenas a todos. Estoy haciendo un proyecto muy conocido con un ARDUINO MEGA 2560, se trata de una calculadora simple. Todo bien pero lo que pasa es que al hacer una operación como la division como 2/3 o 1/2 me sale el numero entero mas no el decimal. Además, cuando quiero hacer esta operación 5+, me deberia salir 5 pero no me deja, por lo tanto no sé si me podrían ayudar a arreglar esto.

    • División como 1/2 o 2/8 me salgan con decimal
    • La operación que como 5+=5

Aqui les dejo el codigo que hice:

#include<LiquidCrystal.h>
#include<Keypad.h>
LiquidCrystal lcd=LiquidCrystal (8,9,10,11,12,13);
const byte ROWS = 4;
const byte COLS = 4;

char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', '+'},
{'4', '5', '6', '-'},
{'7', '8', '9', '*'},
{'X', '0', '=', '/'}
};

byte rowPins[ROWS] = {7, 6, 5, 4};
byte colPins[COLS] = {3,2,1,0};
Keypad myKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 
boolean valorActual = false;
boolean siguiente = false;
boolean final = false;
String num1, num2,num3;
int total;
int movimiento;
char op;
void setup() {
 lcd.begin(16,2);
}
void loop(){
 char key = myKeypad.getKey();
   if (key != NO_KEY && (key=='9'||key=='8'||key=='7'||key=='6'||key=='5'||key=='4'||key=='3'||key=='2'||key=='1'||key=='0')){
   if (valorActual != true){
       num1 = num1 + key;
       int numLength = num1.length();
       movimiento = numLength;
       lcd.setCursor(0, 0);
       lcd.print(num1);
   }
   else {
       num2 = num2 + key;
       int numLength = num2.length();
       lcd.setCursor(movimiento+1, 0);
       lcd.print(num2);
       final = true;
   }
   }

   else if (valorActual == false && key != NO_KEY && (key == '/' || key == '*' || key == '-' || key == '+')){
   if (valorActual == false){
       valorActual = true;
       op = key;
       lcd.setCursor(movimiento,0);
       lcd.print(op);
   }
   }

   else if (final == true && key != NO_KEY && key == '='){
   if (op == '+'){
       total = num1.toInt() + num2.toInt();
   }
   else if (op == '-'){
       total = num1.toInt() - num2.toInt();
   }
   else if (op == '*'){
       total = num1.toInt() * num2.toInt();
   }
   else if (op == '/'){
       if(num2.toInt()==0){
       total = ' ';
       }else{
       total = num1.toInt() / num2.toInt();
       }
   }
   num3=String(total);
   lcd.clear();
   lcd.setCursor(15,0);
   lcd.autoscroll();
   if(total==' '){
       lcd.print("Sintax Error");
   }else if(num3.length()>4){
       lcd.print("No hay memoria");
   }else{
       lcd.print(total);
   }
   lcd.noAutoscroll();
   }
   else if (key != NO_KEY && key == 'X'){
       lcd.clear();
       valorActual = false;
       final = false;
       num1 = "";
       num2 = "";
       total = 0;
       op = ' ';
   }
}

Un agradecimiento inmeso si me logran ayudar :slight_smile:

Lee las normas del foro, allí verás como poner tu código con etiquetas, editalo.

Tu problema es que estas convirtiendo los números a int (entero) por lo que nunca tendrás decimales ademas de tener un rango de -32768 a 32767 por lo que las operaciones que estén fuera de ese rango no darán resultado correcto.