Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h>
- int b,c,x,y,i,a,aux,unidad,decena,centena,numero1=0,numero2=0,unidad2,decena2,centena2;
- char pulsacion,signo;
- char digito[4],digito2[4];
- float resultado;
- LiquidCrystal lcd(7, 8, 9, 10, 11 , 12);
- void setup()
- {
- Serial1.begin(9600); // Comienzo de la comunicación serie
- Serial.begin(9600);
- lcd.begin(16, 2);// Fijamos el numero de caracteres y filas
- lcd.clear();
- lcd.write("PULSE LA TECLA CLR (C)");
- pinMode(23, OUTPUT);
- pinMode(25, OUTPUT);
- pinMode(27, OUTPUT);
- }
- void loop()
- {
- if (Serial1.available())
- {
- pulsacion=Serial1.read();
- if (pulsacion=='C')
- {
- lcd.clear();
- i==0;
- a==0;
- do
- {
- if (Serial1.available())
- {
- pulsacion=Serial1.read();
- aux=pulsacion-48;
- if((i==0)&&(aux>=0)&&(aux<=9)) // controla la impresión en la LCD del primer caracter leído
- {
- lcd.setCursor(i,1);
- lcd.print(aux);
- digito [i] = pulsacion; // guarda cada caracter leído en un array
- }
- else
- if((i==1)&&(aux>=0)&&(aux<=9)) // controla la impresión en la LCD del segundo caracter leído
- {
- lcd.setCursor(i,1);
- lcd.print(aux);
- digito [i] = pulsacion; // guarda cada caracter leído en un array
- }
- else
- if((i==2)&&(aux>=0)&&(aux<=9)) // controla la impresión en la LCD del segundo caracter leído
- {
- lcd.setCursor(i,1);
- lcd.print(aux);
- digito [i] = pulsacion; // guarda cada caracter leído en un array
- }
- i++;
- }
- }while ((pulsacion!='+')||(pulsacion!='-')||(pulsacion!='*')||(pulsacion!='/')&&(i<3));
- if(i==1)
- {
- numero1=digito[0]-48;
- }
- else
- if (i==2)
- {
- unidad=digito[0]-48; // convierte el primer caracter guardado en entero
- decena=digito[1]-48; // convierte el segundo caracter guardado en entero
- numero1=decena*10+unidad;
- }
- else
- if (i==3)
- {
- unidad=digito[2]-48; // convierte el primer caracter guardado en entero
- decena=digito[1]-48; // convierte el segundo caracter guardado en entero
- centena=digito[0]-48; // convierte el tercero caracter guardado en entero
- numero1= centena*100+decena*10+unidad; // concatena unidades y decenas
- }
- //if (Serial1.available())
- //{
- //pulsacion=Serial1.read();
- if ((pulsacion!='+')||(pulsacion!='-')||(pulsacion!='*')||(pulsacion!='/'))
- {
- do
- {
- if (Serial1.available())
- {
- pulsacion=Serial1.read();
- }
- }while((pulsacion!='+')||(pulsacion!='-')||(pulsacion!='*')||(pulsacion!='/'));
- pulsacion=signo;
- b=i+1;
- lcd.setCursor(b,1);
- lcd.print(signo);
- }
- else
- {
- pulsacion=signo;
- b=i+1;
- lcd.setCursor(b,1);
- lcd.print(signo);
- }
- //}
- do
- {
- if (Serial1.available())
- {
- pulsacion=Serial1.read();
- aux=pulsacion-48;
- if((a==0)&&(aux>=0)&&(aux<=9)) // controla la impresión en la LCD del primer caracter leído
- {
- y=i+1+a;
- lcd.setCursor(y,1);
- lcd.print(aux);
- digito2 [a] = pulsacion; // guarda cada caracter leído en un array
- }
- else
- if((a==1)&&(aux>=0)&&(aux<=9)) // controla la impresión en la LCD del segundo caracter leído
- {
- y=i+1+a;
- lcd.setCursor(y,1);
- lcd.print(aux);
- digito2 [a] = pulsacion; // guarda cada caracter leído en un array
- }
- else
- if((a==2)&&(aux>=0)&&(aux<=9)) // controla la impresión en la LCD del segundo caracter leído
- {
- y=i+1+a;
- lcd.setCursor(y,1);
- lcd.print(aux);
- digito2 [a] = pulsacion; // guarda cada caracter leído en un array
- }
- a++;
- }
- }while ((pulsacion!='=')&&(a<3));
- if(a==1)
- {
- numero2=digito2[0]-48;
- }
- else
- if (a==2)
- {
- unidad2=digito2[0]-48; // convierte el primer caracter guardado en entero
- decena2=digito2[1]-48; // convierte el segundo caracter guardado en entero
- numero2=decena2*10+unidad2;
- }
- else
- if (a==3)
- {
- unidad2=digito2[2]-48; // convierte el primer caracter guardado en entero
- decena2=digito2[1]-48; // convierte el segundo caracter guardado en entero
- centena2=digito2[0]-48; // convierte el tercero caracter guardado en entero
- numero2= centena2*100+decena2*10+unidad2; // concatena unidades y decenas
- }
- //if (Serial1.available())
- //{
- //pulsacion=Serial1.read();
- if (pulsacion=='=')
- {
- c=i+a;
- lcd.setCursor(c,1);
- lcd.print(pulsacion);
- }
- else
- {
- do
- {
- if (Serial1.available())
- {
- pulsacion=Serial1.read();
- }
- }while(pulsacion!='=');
- c=i+a;
- lcd.setCursor(c,1);
- lcd.print(pulsacion);
- }
- //}
- if (signo=='+')
- {
- resultado=numero1+numero2;
- }
- else
- if (signo=='-')
- {
- resultado=numero1-numero2;
- }
- else
- if (signo=='*')
- {
- resultado=numero1*numero2;
- }
- else
- if (signo=='/')
- {
- resultado=numero1/numero2;
- }
- x=(i+a+2);
- lcd.setCursor(x,1);
- lcd.print(resultado);
- //Serial1.write(resultado);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement