Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.74 KB | None | 0 0
  1. #include <LiquidCrystal.h>
  2. LiquidCrystal lcd(7, 8, 9, 10, 11 , 12);
  3. //char estado;
  4. int estado;
  5. int numero1 = -1;
  6. int numero2 = -1;
  7. char caracter = '0';
  8. int posicion = 0;
  9. char digito[4];
  10. int resultado;
  11. char aux[4];
  12.  
  13. void setup() {
  14.   lcd.begin(16, 2);
  15.   lcd.clear();
  16.   lcd.setCursor(0, 0);
  17.   lcd.write("Press * to clear");
  18.   Serial1.begin(9600); // Comienzo de la comunicación serie
  19. }
  20. void loop() {
  21.   // Si por el puerto serie llegan datos (RX)
  22.   if (Serial1.available())
  23.   {
  24.     estado = (char)Serial1.read();
  25.     if (estado == '*')
  26.     {
  27.       posicion = 0;
  28.       lcd.clear();
  29.     }
  30.     else
  31.     {
  32.       digito[posicion] = estado;
  33.       lcd.setCursor(posicion, 0);
  34.       lcd.write(estado);
  35.       posicion++;
  36.       if (estado == '=')
  37.       {
  38.         operacion();
  39.         posicion = 0;
  40.         lcd.clear();
  41.         lcd.setCursor(0, 0);
  42.         lcd.write("Press * to clear");
  43.       }
  44.     }
  45.   }
  46. }
  47. void operacion()
  48. {
  49.  
  50.   int j = 0;
  51.  
  52.   for (int i = 0 ; i < posicion ; i++)
  53.   {
  54.     if (digito[i] = 61)
  55.     {
  56.       numero2 = char2int(j);
  57.       j = 0;
  58.     }
  59.     else if (digito[i] < 48 || digito[i] > 57)
  60.     {
  61.       numero1 = char2int(j);
  62.       j = 0;
  63.       caracter = digito[i];
  64.     }
  65.     aux[j] = digito[i];
  66.     j++;
  67.   }
  68.  
  69.   if (caracter = '+')
  70.     resultado = numero1 + numero2;
  71.   else if (caracter = '-')
  72.     resultado = numero1 - numero2;
  73.   else if (caracter = '*')
  74.     resultado = numero1 * numero2;
  75.   else if (caracter = '/')
  76.     resultado = numero1 / numero2;
  77.   lcd.setCursor(posicion, 0);
  78.   lcd.write(resultado);
  79.   delay(1000);
  80. }
  81.  
  82. int char2int(int n)
  83. {
  84.   int numeroA = 0;
  85.   for (int i = 0; i < n; i++)
  86.   {
  87.     numeroA = (numeroA + aux[i] - 48) * 10;
  88.  
  89.   }
  90.   numeroA /= 10;
  91.   return numeroA;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement