Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.22 KB | None | 0 0
  1. #include <LiquidCrystal.h>
  2.  
  3. int b,c,x,y,i,a,aux,unidad,decena,centena,numero1=0,numero2=0,unidad2,decena2,centena2;
  4. char pulsacion,signo;
  5. char digito[4],digito2[4];
  6. float resultado;
  7.  
  8. LiquidCrystal lcd(7, 8, 9, 10, 11 , 12);
  9.  
  10. void setup()
  11. {
  12. Serial1.begin(9600); // Comienzo de la comunicación serie
  13. Serial.begin(9600);
  14. lcd.begin(16, 2);// Fijamos el numero de caracteres y filas
  15. lcd.clear();
  16. lcd.write("PULSE LA TECLA CLR (C)");
  17. pinMode(23, OUTPUT);
  18. pinMode(25, OUTPUT);
  19. pinMode(27, OUTPUT);
  20. }
  21.  
  22. void loop()
  23. {
  24. if (Serial1.available())
  25. {
  26. pulsacion=Serial1.read();
  27. if (pulsacion=='C')
  28. {
  29. lcd.clear();
  30. i==0;
  31. a==0;
  32. do
  33. {
  34. if (Serial1.available())
  35. {
  36. pulsacion=Serial1.read();
  37. aux=pulsacion-48;
  38. if((i==0)&&(aux>=0)&&(aux<=9)) // controla la impresión en la LCD del primer caracter leído
  39. {
  40. lcd.setCursor(i,1);
  41. lcd.print(aux);
  42. digito [i] = pulsacion; // guarda cada caracter leído en un array
  43. }
  44. else
  45. if((i==1)&&(aux>=0)&&(aux<=9)) // controla la impresión en la LCD del segundo caracter leído
  46. {
  47. lcd.setCursor(i,1);
  48. lcd.print(aux);
  49. digito [i] = pulsacion; // guarda cada caracter leído en un array
  50. }
  51. else
  52. if((i==2)&&(aux>=0)&&(aux<=9)) // controla la impresión en la LCD del segundo caracter leído
  53. {
  54. lcd.setCursor(i,1);
  55. lcd.print(aux);
  56. digito [i] = pulsacion; // guarda cada caracter leído en un array
  57. }
  58. i++;
  59. }
  60. }while ((pulsacion!='+')||(pulsacion!='-')||(pulsacion!='*')||(pulsacion!='/')&&(i<3));
  61.  
  62. if(i==1)
  63. {
  64. numero1=digito[0]-48;
  65. }
  66. else
  67. if (i==2)
  68. {
  69. unidad=digito[0]-48; // convierte el primer caracter guardado en entero
  70. decena=digito[1]-48; // convierte el segundo caracter guardado en entero
  71. numero1=decena*10+unidad;
  72. }
  73. else
  74. if (i==3)
  75. {
  76. unidad=digito[2]-48; // convierte el primer caracter guardado en entero
  77. decena=digito[1]-48; // convierte el segundo caracter guardado en entero
  78. centena=digito[0]-48; // convierte el tercero caracter guardado en entero
  79. numero1= centena*100+decena*10+unidad; // concatena unidades y decenas
  80. }
  81.  
  82. //if (Serial1.available())
  83. //{
  84. //pulsacion=Serial1.read();
  85. if ((pulsacion!='+')||(pulsacion!='-')||(pulsacion!='*')||(pulsacion!='/'))
  86. {
  87. do
  88. {
  89. if (Serial1.available())
  90. {
  91. pulsacion=Serial1.read();
  92. }
  93. }while((pulsacion!='+')||(pulsacion!='-')||(pulsacion!='*')||(pulsacion!='/'));
  94. pulsacion=signo;
  95. b=i+1;
  96. lcd.setCursor(b,1);
  97. lcd.print(signo);
  98. }
  99. else
  100. {
  101. pulsacion=signo;
  102. b=i+1;
  103. lcd.setCursor(b,1);
  104. lcd.print(signo);
  105. }
  106. //}
  107.  
  108. do
  109. {
  110. if (Serial1.available())
  111. {
  112. pulsacion=Serial1.read();
  113. aux=pulsacion-48;
  114. if((a==0)&&(aux>=0)&&(aux<=9)) // controla la impresión en la LCD del primer caracter leído
  115. {
  116. y=i+1+a;
  117. lcd.setCursor(y,1);
  118. lcd.print(aux);
  119. digito2 [a] = pulsacion; // guarda cada caracter leído en un array
  120. }
  121. else
  122. if((a==1)&&(aux>=0)&&(aux<=9)) // controla la impresión en la LCD del segundo caracter leído
  123. {
  124. y=i+1+a;
  125. lcd.setCursor(y,1);
  126. lcd.print(aux);
  127. digito2 [a] = pulsacion; // guarda cada caracter leído en un array
  128. }
  129. else
  130. if((a==2)&&(aux>=0)&&(aux<=9)) // controla la impresión en la LCD del segundo caracter leído
  131. {
  132. y=i+1+a;
  133. lcd.setCursor(y,1);
  134. lcd.print(aux);
  135. digito2 [a] = pulsacion; // guarda cada caracter leído en un array
  136. }
  137. a++;
  138. }
  139. }while ((pulsacion!='=')&&(a<3));
  140.  
  141. if(a==1)
  142. {
  143. numero2=digito2[0]-48;
  144. }
  145. else
  146. if (a==2)
  147. {
  148. unidad2=digito2[0]-48; // convierte el primer caracter guardado en entero
  149. decena2=digito2[1]-48; // convierte el segundo caracter guardado en entero
  150. numero2=decena2*10+unidad2;
  151. }
  152. else
  153. if (a==3)
  154. {
  155. unidad2=digito2[2]-48; // convierte el primer caracter guardado en entero
  156. decena2=digito2[1]-48; // convierte el segundo caracter guardado en entero
  157. centena2=digito2[0]-48; // convierte el tercero caracter guardado en entero
  158. numero2= centena2*100+decena2*10+unidad2; // concatena unidades y decenas
  159. }
  160.  
  161. //if (Serial1.available())
  162. //{
  163. //pulsacion=Serial1.read();
  164. if (pulsacion=='=')
  165. {
  166. c=i+a;
  167. lcd.setCursor(c,1);
  168. lcd.print(pulsacion);
  169. }
  170. else
  171. {
  172. do
  173. {
  174. if (Serial1.available())
  175. {
  176. pulsacion=Serial1.read();
  177. }
  178. }while(pulsacion!='=');
  179. c=i+a;
  180. lcd.setCursor(c,1);
  181. lcd.print(pulsacion);
  182. }
  183. //}
  184.  
  185. if (signo=='+')
  186. {
  187. resultado=numero1+numero2;
  188. }
  189. else
  190. if (signo=='-')
  191. {
  192. resultado=numero1-numero2;
  193. }
  194. else
  195. if (signo=='*')
  196. {
  197. resultado=numero1*numero2;
  198. }
  199. else
  200. if (signo=='/')
  201. {
  202. resultado=numero1/numero2;
  203. }
  204.  
  205. x=(i+a+2);
  206. lcd.setCursor(x,1);
  207. lcd.print(resultado);
  208. //Serial1.write(resultado);
  209. }
  210. }
  211. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement