Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.94 KB | None | 0 0
  1. #include <Keypad.h>
  2. #include <LiquidCrystal.h>
  3. #include <TimerOne.h>
  4. #include <TimerThree.h>
  5. #include <TimerFour.h>
  6. LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
  7. const byte Filas = 4; //Cuatro filas
  8. const byte Cols = 3; //Cuatro columnas
  9. int i, aux, unidad, decena, centena, numero1 = 0, cont = 9, cont1 = 1, cont2 = 0;
  10. char digito[4];
  11. char pulsacion;
  12. byte Pins_Filas[] = {3, 4, 5, 6}; //Pines Arduino para las filas
  13. byte Pins_Cols[] = {23, 25, 27}; // Pines Arduino para las columnas
  14. char Teclas [ Filas ][ Cols ] =
  15. {
  16. {'1', '2', '3'},
  17. {'4', '5', '6'},
  18. {'7', '8', '9'},
  19. {'*', '0', '#'}
  20. };
  21. Keypad myKeypad = Keypad(makeKeymap(Teclas), Pins_Filas, Pins_Cols, Filas, Cols);
  22. void setup()
  23. { Timer1.initialize(70000); // Configura el disparo de la interrupción cada 500us
  24. //Timer3.initialize(20000); // Configura el disparo de la interrupción cada 250us
  25. Timer4.initialize(50000); // Configura el disparo de la interrupción cada 800us
  26. Timer1.detachInterrupt(); // Desactiva la interrupcion
  27. Timer4.detachInterrupt(); // Desactiva la interrupcion
  28. //pinMode(23, OUTPUT);
  29. //pinMode(25, OUTPUT);
  30. //pinMode(27, OUTPUT);
  31. lcd.begin(16, 2); // Fijamos el numero de caracteres y filas
  32. lcd.clear();
  33. lcd.write("MONITOREO DE");
  34. lcd.setCursor(0, 1);
  35. lcd.write("SENIALES C/CLAVE");
  36. delay(3000);
  37. lcd.clear();
  38. lcd.write("PULSE (*) CLEAR");
  39. }
  40. void temperatura() // rutina de interrupcion Timer1
  41. {
  42. long dato;
  43. float salida;
  44. long dato2;
  45. float salida2;
  46.  
  47. do
  48. {
  49. dato = analogRead(0);
  50. dato2 = analogRead(2);
  51. salida = (dato * 5.0 / 1023) * 100;
  52. salida2 = 7113.01392 / dato2 - 5.5;
  53. lcd.clear();
  54. lcd.setCursor(0, 0);
  55. lcd.print("VALOR 1=");
  56. lcd.setCursor(9, 0);
  57. lcd.print(salida, DEC);
  58. lcd.setCursor(15, 0);
  59. lcd.print("C ");
  60. lcd.setCursor(0, 1);
  61. lcd.print("VALOR 1=");
  62. lcd.setCursor(9, 1);
  63. lcd.print(salida2, DEC);
  64. lcd.setCursor(15, 1);
  65. lcd.print("cm ");
  66. delay(5000);
  67. }
  68. while (pulsacion == '*');
  69. }
  70. void hola() // rutina de interrupcion Timer3
  71. {
  72. long dato;
  73. float salida;
  74. long dato2;
  75. float salida2;
  76. do
  77. {
  78. dato = analogRead(4);
  79. salida = (48.87585533 * dato) / (5 - dato * 0.004887585);
  80. dato2 = analogRead(6);
  81. salida2 = dato2 * 0.1062 + 10.5555;
  82. lcd.clear();
  83. lcd.setCursor(0, 0);
  84. lcd.print("VALOR 1=");
  85. lcd.setCursor(9, 0);
  86. lcd.print(salida, DEC);
  87. lcd.setCursor(15, 0);
  88. lcd.print("P ");
  89. lcd.setCursor(0, 1);
  90. lcd.print("VALOR 1=");
  91. lcd.setCursor(9, 1);
  92. lcd.print(salida2, DEC);
  93. lcd.setCursor(15, 1);
  94. lcd.print("kPa ");
  95. delay(5000);
  96. }
  97. while (pulsacion == '*');
  98. }
  99.  
  100. void loop()
  101. {
  102. do
  103. {
  104. pulsacion = myKeypad.getKey() ; // lee la señal de la tecla pulsada
  105. }
  106. while (pulsacion == NO_KEY); // espera hasta que se pulse la tecla
  107. if (pulsacion == '*')
  108. { Timer1.detachInterrupt(); // Desactiva la interrupcion Timer1
  109. Timer3.detachInterrupt(); // Desactiva la interrupcion Timer3
  110. Timer4.detachInterrupt(); // Desactiva la interrupcion Timer4
  111. //int numero=0;
  112. lcd.clear();
  113. lcd.print("DIGITE LA CLAVE:");
  114.  
  115. for (i = 0; i <= 3; i++) // controla la pulsación de tres teclas: dos caracteres numéricos y #
  116. { do
  117. {
  118. pulsacion = myKeypad.getKey() ; //lee la tecla pulsada
  119. aux = pulsacion - 48; // convierte el caracter leído a entero
  120. }
  121. while (pulsacion == NO_KEY); // espera la pulsación de la tecla
  122.  
  123. if ((i == 0) && (aux >= 0) && (aux <= 9)) // controla la impresión en la LCD del primer caracter leído
  124. {
  125. lcd.setCursor(i, 1);
  126. lcd.print(aux);
  127. digito [i] = pulsacion; // guarda cada caracter leído en un array
  128. }
  129. else if ((i == 1) && (aux >= 0) && (aux <= 9)) // controla la impresión en la LCD del segundo caracter leído
  130. {
  131. lcd.setCursor(i, 1);
  132. lcd.print(aux);
  133. digito [i] = pulsacion; // guarda cada caracter leído en un array
  134. }
  135. else if ((i == 2) && (aux >= 0) && (aux <= 9)) // controla la impresión en la LCD del segundo caracter leído
  136. {
  137. lcd.setCursor(i, 1);
  138. lcd.print(aux);
  139. digito [i] = pulsacion; // guarda cada caracter leído en un array
  140. }
  141. else if ((i == 3) && (pulsacion == '#')) // controla el tercer caracter leído (#)
  142. {
  143. unidad = digito[2] - 48; // convierte el primer caracter guardado en entero
  144. decena = digito[1] - 48; // convierte el segundo caracter guardado en entero
  145. centena = digito[0] - 48; // convierte el tercero caracter guardado en entero
  146. numero1 = centena * 100 + decena * 10 + unidad; // concatena unidades y decenas
  147. if (numero1 == 972) // verifica si la clave 1 es correcta
  148. {
  149. Timer4.attachInterrupt(temperatura); // Activa la interrupcion Timer1
  150. //Timer3.detachInterrupt(); // Desactiva la interrupcion Timer3
  151. Timer1.detachInterrupt(); // Desactiva la interrupcion Timer4
  152. }
  153. else if (numero1 == 160) // verifica si la clave 2 es correcta
  154. { Timer4.detachInterrupt(); // Desactiva la interrupcion Timer1
  155. //Timer3.attachInterrupt(LDR); // Activa la interrupcion Timer3
  156. Timer1.attachInterrupt(hola); // Desactiva la interrupcion Timer4
  157. }
  158. else // valida si la clave es incorrecta
  159. { lcd.clear();
  160. lcd.write("ERROR...");
  161. lcd.setCursor(0, 1);
  162. lcd.write("PULSE (*) CLEAR");
  163. }
  164. }
  165. else // valida si la clave no es numérica
  166. { lcd.clear();
  167. lcd.write("ERROR...");
  168. lcd.setCursor(0, 1);
  169. lcd.write("PULSE (*) CLEAR");
  170. break;
  171. }
  172. }
  173. }
  174. else // valida si la clave inicia con (*) CLEAR
  175. { lcd.clear();
  176. lcd.write(" ");
  177. lcd.setCursor(0, 1);
  178. lcd.write("PULSE (*) CLEAR");
  179. }
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement