Advertisement
losst

Untitled

Jun 22nd, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.67 KB | None | 0 0
  1. // inclui a biblioteca:
  2. #include <LiquidCrystal.h>
  3. #include <Keypad.h>
  4. #include <MsTimer2.h>
  5. // define os pinos de conexão entre o Arduino e o Display LCD
  6. LiquidCrystal lcd (0, 1, 2, 3, 4, 5); // (RS,E,D4,D5,D6,D7)
  7.  
  8. volatile char centesimos, segundos, minutos;
  9. volatile boolean mudouCrono = true;
  10. volatile boolean cronoLigado = false;
  11.  
  12. // variáveis do programa
  13. const int pinoSensor = A0;
  14. const int pinoValvula = 13;
  15.  
  16. const int limiarSeco = 74;
  17. const int tempoRega = 3; // Tempo de rega em segundos
  18.  
  19.  
  20. int entrada;
  21. int umidadeSolo = 0;
  22. int botMenu = 8;
  23. int estadobotMenu;
  24. int TM;//timer manual(definido pelo operador)
  25. int menu = 1;
  26. //Teclado Matricial
  27.  
  28. const int C1 = 10;
  29. const int C2 = 11;
  30. const int C3 = 12;
  31.  
  32. const int L1 = A2;
  33. const int L2 = A3;
  34. const int L3 = A4;
  35. const int L4 = A5;
  36.  
  37. byte pinosLinhas [] = {L1, L2, L3, L4};
  38. byte pinosColunas [] = {C1, C2, C3};
  39.  
  40. char teclas[4][3] = { {'1', '2', '3'},
  41. {'4', '5', '6'},
  42. {'7', '8', '9'},
  43. {'*', '0', '#'}
  44. };
  45.  
  46. int count = 0;
  47. char pass [4] = {'0', '0', '0', '0'}; // senha padrão
  48. char tempo[3] = {'0', '0', '0'}; //tempo em min, max 999 ou 16 horas aprox
  49.  
  50.  
  51.  
  52.  
  53.  
  54. char tecla_pressionada;
  55. Keypad teclado1 = Keypad(makeKeymap (teclas), pinosLinhas, pinosColunas, 4, 3); //'keypad' como se fosse um tipo de variavel;'teclado1 =' variavelmakekeymap (teclas): mapeia as variaveis char dentro de "teclas"
  56.  
  57. void setup() {/////////////////////////////////////////////////////////////////////////
  58.  
  59. lcd.begin(16, 2);// define o tamanho do Display LCD
  60.  
  61. pinMode(botMenu, INPUT_PULLUP);
  62. pinMode(pinoValvula, OUTPUT);
  63. digitalWrite(pinoValvula, HIGH); // Desliga a válvula
  64.  
  65. pinMode(8, OUTPUT);
  66.  
  67. minutos = segundos = centesimos = 0;
  68. lcd.begin(16, 2);
  69. lcd.noCursor();
  70. lcd.print ("Contador");
  71.  
  72. MsTimer2::set (10, ajustaCronometro);
  73.  
  74. lcd.clear();
  75. lcd.setCursor(2, 0);
  76. lcd.print ("Auto. Irriga");
  77. lcd.setCursor(3, 1);
  78. lcd.print ("Version 1.8");
  79. delay (1000);
  80. lcd.clear();
  81.  
  82. }
  83. void ajustaCronometro () {
  84.  
  85. centesimos++;
  86.  
  87. if (centesimos == 100) {
  88. centesimos = 0;
  89. segundos++;
  90.  
  91. if (segundos == 60) {
  92. segundos = 0;
  93. minutos ++;
  94. }
  95. }
  96.  
  97.  
  98. mudouCrono = true;
  99. }
  100.  
  101.  
  102. void loop () {
  103. lcd.setCursor(1, 0);
  104. lcd.print("Temporizador");
  105. delay(3000);
  106. lcd.clear();
  107. lcd.setCursor(2, 0);
  108. lcd.print("Digite o tempo");
  109.  
  110.  
  111. while (count < 3 ) { // enquanto não entrou os 4 números necessários para a senha
  112. char tecla_pressionada = teclado1.getKey(); // obtém informação do teclado
  113. if (tecla_pressionada != NO_KEY) { // se foi teclado algo
  114. entrada += 1; // aumenta contrador de entradas
  115.  
  116. tempo[count] = tecla_pressionada; // aramazena o novo dígito
  117. count += 1;
  118. lcd.print(tecla_pressionada);
  119. TM = atoi(tempo);
  120. if (count == 3) {
  121. if ((tecla_pressionada == "#") //inicia/confirma
  122. && (cronoLigado == false) )
  123. {
  124. cronoLigado = true;
  125. MsTimer2::start();
  126. }
  127. else if ((tecla_pressionada == "#")//para a contagem depois de iniciada
  128. && (cronoLigado == true) )
  129. {
  130. cronoLigado = false;
  131. MsTimer2::stop();
  132. }
  133.  
  134. if (tecla_pressionada == "#") {
  135. lcd.clear();
  136. lcd.setCursor (0, 1);
  137. lcd.print (minutos, DEC); lcd.print (" min : ");
  138. lcd.print (segundos, DEC); lcd.print (" seg");
  139.  
  140. mudouCrono = false;
  141.  
  142. }
  143. if (minutos == TM ) {
  144. digitalWrite(8, 1);
  145. }
  146. if (minutos != TM ) {
  147. digitalWrite(8, 0);
  148. segundos == 0;
  149. }
  150. }
  151. }
  152. }
  153. return 0;
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement