Advertisement
Guest User

Untitled

a guest
Oct 19th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.06 KB | None | 0 0
  1. #include <multiprotocolShield.h>
  2. #include <MCP23008.h>
  3. #include <Wire.h>
  4. # define INACTIVO 0
  5. # define ACTIVO 1
  6. # define RESET 2
  7. # define BUFFER_SIZE 750
  8. int index = 0;
  9. char buffer[BUFFER_SIZE];
  10. struct Sistema {
  11. byte estado;
  12. char operando;
  13. int primero;
  14. int segundo;
  15. int resultado;
  16. int contador;
  17. };
  18. void operar(struct Sistema &sist){
  19. switch (sist.operando){
  20. case '*':
  21. sist.resultado = sist.primero * sist.segundo;
  22. break;
  23. case '/':
  24. sist.resultado = sist.primero / sist.segundo;
  25. break;
  26. case '+':
  27. sist.resultado = sist.primero + sist.segundo;
  28. break;
  29. case '-':
  30. sist.resultado = sist.primero - sist.segundo;
  31. break;
  32. }
  33. Serial.println(sist.resultado);
  34. }
  35. void setup_sistema(struct Sistema &sist){
  36. sist.estado = INACTIVO;
  37. sist.contador = 0;
  38. }
  39. void loop_sistema(struct Sistema &sist, char &c){
  40. switch(sist.estado){
  41. case INACTIVO:
  42. if(c == '#'){
  43. sist.estado = ACTIVO;
  44. Serial.println("Introduce la operacion");
  45. } else {
  46. Serial.println("INCORRECTO");
  47. }
  48. break;
  49. case ACTIVO:
  50. if(sist.contador == 0){
  51. if(c == '*' || c == '/' || c == '+' || c == '-'){
  52. sist.operando = c;
  53. sist.contador++;
  54. Serial.println("Introduce el primer numero");
  55. } else {
  56. Serial.println("INCORRECTO");
  57. }
  58. } else if (sist.contador == 1){
  59. sist.primero = c - '0';
  60. sist.contador++;
  61. Serial.println("Introduce el segundo numero");
  62. } else if(sist.contador == 2){
  63. sist.segundo = c - '0';
  64. sist.estado = RESET;
  65. operar(sist);
  66. sist.contador = 0;
  67. sist.estado = INACTIVO;
  68. }
  69. break;
  70. }
  71. }
  72. //---------------------------------------------
  73. Sistema sist;
  74. void setup() {
  75. pinMode(13, OUTPUT);
  76. Serial.begin(115200);
  77. delay(1000);
  78. Serial.setTimeout(30);
  79. socket0.ON();
  80. delay(100);
  81. socket0.setMUX();
  82. delay(100);
  83.  
  84. setup_sistema(sist);
  85. // ----------------------------------------------------------------
  86.  
  87. Serial.println("SET BT PAGEMODE 4");
  88.  
  89. }
  90.  
  91. void loop() {
  92. char c;
  93. while(Serial.available()== 0){
  94. Serial.println("Esperando...");
  95. delay(5000);
  96. }
  97. c = Serial.read();
  98. loop_sistema(sist, c);
  99. }
  100.  
  101.  
  102.  
  103. void printSerialInput(int seconds){
  104. int counter = seconds * 1000 / 10;
  105. while( counter > 0 ){
  106. if( Serial.available() ){
  107. while(Serial.available() > 0) {
  108. int incomingByte = Serial.read();
  109. buffer[index] = (char)incomingByte;
  110. index++;
  111. }
  112. }
  113. delay(10);
  114. counter--;
  115. }
  116. if( index != 0 ){
  117. flushToSerialDebug( buffer, index );
  118. index = 0;
  119. }
  120. }
  121.  
  122. void flushToSerialDebug(char* buffer, int len){
  123. socket1.ON();
  124. delay(100);
  125. socket1.setMUX();
  126.  
  127. Serial.write(buffer, len);
  128. delay(100);
  129.  
  130. socket0.ON();
  131. delay(100);
  132. socket0.setMUX();
  133. delay(100);
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement