Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h>
- LiquidCrystal lcd(7, 8, 9, 10, 11 , 12);
- //char estado;
- int estado;
- int numero1 = -1;
- int numero2 = -1;
- char caracter = '0';
- int posicion = 0;
- char digito[4];
- int resultado;
- char aux[4];
- void setup() {
- lcd.begin(16, 2);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.write("Press * to clear");
- Serial1.begin(9600); // Comienzo de la comunicación serie
- }
- void loop() {
- // Si por el puerto serie llegan datos (RX)
- if (Serial1.available())
- {
- estado = (char)Serial1.read();
- if (estado == '*')
- {
- posicion = 0;
- lcd.clear();
- }
- else
- {
- digito[posicion] = estado;
- lcd.setCursor(posicion, 0);
- lcd.write(estado);
- posicion++;
- if (estado == '=')
- {
- operacion();
- posicion = 0;
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.write("Press * to clear");
- }
- }
- }
- }
- void operacion()
- {
- int j = 0;
- for (int i = 0 ; i < posicion ; i++)
- {
- if (digito[i] = 61)
- {
- numero2 = char2int(j);
- j = 0;
- }
- else if (digito[i] < 48 || digito[i] > 57)
- {
- numero1 = char2int(j);
- j = 0;
- caracter = digito[i];
- }
- aux[j] = digito[i];
- j++;
- }
- if (caracter = '+')
- resultado = numero1 + numero2;
- else if (caracter = '-')
- resultado = numero1 - numero2;
- else if (caracter = '*')
- resultado = numero1 * numero2;
- else if (caracter = '/')
- resultado = numero1 / numero2;
- lcd.setCursor(posicion, 0);
- lcd.write(resultado);
- delay(1000);
- }
- int char2int(int n)
- {
- int numeroA = 0;
- for (int i = 0; i < n; i++)
- {
- numeroA = (numeroA + aux[i] - 48) * 10;
- }
- numeroA /= 10;
- return numeroA;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement