Advertisement
Guest User

Untitled

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