Advertisement
RuiViana

Irrigacao Ver01

Oct 1st, 2015
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.93 KB | None | 0 0
  1. // Definicoes ---------------------------------------------------------------
  2. // Programa : Data e Hora com DS1307
  3. // Autor : Rui
  4.  
  5. #include "Wire.h"
  6. #include <LiquidCrystal.h> //Biblioteca do LCD
  7. #define Bomba 10 //variavel e pino do rele da bomba
  8. #define vs1 9 //variavel e pino do rele do setor1
  9. #define DS1307_ADDRESS 0x68
  10.  
  11. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//Portas do lcd
  12. byte LigaSr1 = 0;
  13. byte LigaSr2 = 0;
  14. byte LigaSr3 = 0;
  15. byte LigaSr4 = 0;
  16. byte Di[7] = {0,1,2,3,8,8,8}; // Dias Semana programados (8 Não será ativado o sistema)
  17. byte Ho[] = {9,17,21}; // Horas programadas
  18. byte Mn[] = {8,34,47}; // Minutos programados
  19. byte Se[] = {2,22,54}; // Segundos programados
  20. byte diadasemana;
  21. byte horas;
  22. byte minutos;
  23. byte segundos;
  24. long Tempo;
  25. long Duracao;
  26.  
  27. byte zero = 0x00;
  28. // Setup --------------------------------------------------------------
  29. void setup()
  30. {
  31. Wire.begin();
  32. Serial.begin(9600);
  33. lcd.begin(16, 2); // iniciando o lcd
  34. //A linha abaixo pode ser retirada apos setar a data e hora
  35. SelecionaDataeHora();
  36. }
  37.  
  38. // SetTime ------------------------------------------------------------
  39. void SelecionaDataeHora() //Seta a data e a hora do DS1307
  40. {
  41. byte segundos = 40; //Valores de 0 a 59
  42. byte minutos = 59; //Valores de 0 a 59
  43. horas = 23; //Valores de 0 a 23
  44. byte diadasemana = 1; //Valores de 0 a 6 - 0=Domingo, 1 = Segunda, etc.
  45. byte diadomes = 17; //Valores de 1 a 31
  46. byte mes = 4; //Valores de 1 a 12
  47. byte ano = 13; //Valores de 0 a 99
  48. Wire.beginTransmission(DS1307_ADDRESS);
  49. Wire.write(zero); //Stop no CI para que o mesmo possa receber os dados
  50.  
  51. //As linhas abaixo escrevem no CI os valores de
  52. //data e hora que foram colocados nas variaveis acima
  53. Wire.write(ConverteParaBCD(segundos));
  54. Wire.write(ConverteParaBCD(minutos));
  55. Wire.write(ConverteParaBCD(horas));
  56. Wire.write(ConverteParaBCD(diadasemana));
  57. Wire.write(ConverteParaBCD(diadomes));
  58. Wire.write(ConverteParaBCD(mes));
  59. Wire.write(ConverteParaBCD(ano));
  60. Wire.write(zero); //Start no CI
  61. Wire.endTransmission();
  62. }
  63.  
  64. // CV_B ------------------------------------------------------------
  65. byte ConverteParaBCD(byte val){ //Converte o número de decimal para BCD
  66. return ( (val/10*16) + (val%10) );
  67. }
  68.  
  69. // SetTime ------------------------------------------------------------
  70. byte ConverteparaDecimal(byte val) { //Converte de BCD para decimal
  71. return ( (val/16*10) + (val%16) );
  72. }
  73. // Diplay -------------------------------------------------------------
  74. void Mostrarelogio()
  75. {
  76. Wire.beginTransmission(DS1307_ADDRESS);
  77. Wire.write(zero);
  78. Wire.endTransmission();
  79. Wire.requestFrom(DS1307_ADDRESS, 7);
  80. segundos = ConverteparaDecimal(Wire.read());
  81. minutos = ConverteparaDecimal(Wire.read());
  82. horas = ConverteparaDecimal(Wire.read() & 0b111111);
  83. diadasemana = ConverteparaDecimal(Wire.read());
  84. // diadasemana = 4;
  85. int diadomes = ConverteparaDecimal(Wire.read());
  86. int mes = ConverteparaDecimal(Wire.read());
  87. int ano = ConverteparaDecimal(Wire.read());
  88. //Mostra a data no Serial Monitor
  89. Serial.print("Data: ");
  90. Serial.print(diadomes);
  91. Serial.print("/");
  92. Serial.print(mes);
  93. Serial.print("/");
  94. Serial.print(ano);
  95. Serial.print(" ");
  96. Serial.print("Hora : ");
  97. Serial.print(horas);
  98. Serial.print(":");
  99. Serial.print(minutos);
  100. Serial.print(":");
  101. Serial.println(segundos);
  102. switch(diadasemana)
  103. {
  104. case 0:Serial.println(", Domingo");
  105. break;
  106. case 1:Serial.println(", Segunda");
  107. break;
  108. case 2:Serial.println(", Terca");
  109. break;
  110. case 3:Serial.println(", Quarta");
  111. break;
  112. case 4:Serial.println(", Quinta");
  113. break;
  114. case 5:Serial.println(", Sexta");
  115. break;
  116. case 6:Serial.println(", Sabado");
  117. }
  118. }
  119. // Ativa Sv1 ----------------------------------------------------------
  120. void atv_Sr1()
  121. {
  122. if (LigaSr1 = 1)
  123. {
  124. digitalWrite(Bomba, LOW); // Liga bomba dágua
  125. digitalWrite(vs1, LOW); // Liga solenoide do setor1
  126. }
  127. else
  128. digitalWrite(vs1, HIGH); // Desliga solenoide do setor1
  129. }
  130. // Identificas dia Semana-------------------------------------------------------
  131. void Dia_irriga()
  132. {
  133. switch (Di[diadasemana])
  134. {
  135. case 0:Calc_Inicio();
  136. break;
  137. case 1:Calc_Inicio();
  138. break;
  139. case 2:Calc_Inicio();
  140. break;
  141. case 3:Calc_Inicio();
  142. break;
  143. case 4:Calc_Inicio();
  144. break;
  145. case 5:Calc_Inicio();
  146. break;
  147. case 6:Calc_Inicio();
  148. }
  149. }
  150.  
  151. // Calc Inicio ---------------------------------------------------------------
  152. void Calc_Inicio()
  153. {
  154. Duracao = Tempo;
  155. for (byte i = 0; i<3;i++)
  156. {
  157. if ((Ho[i] == horas) & (Mn[i] == minutos) & (Se[i] == segundos) )
  158. {
  159. while (Duracao>0)
  160. {
  161. LigaSr1 = 0;
  162. Duracao--;
  163. }
  164. Duracao = Tempo;
  165. LigaSr1 = 1;
  166. while (Duracao>0)
  167. {
  168. LigaSr2 = 0;
  169. Duracao--;
  170. }
  171. Duracao = Tempo;
  172. LigaSr1 = 2;
  173. while (Duracao>0)
  174. {
  175. LigaSr3 = 0;
  176. Duracao--;
  177. }
  178. Duracao = Tempo;
  179. LigaSr1 = 3;
  180. while (Duracao>0)
  181. {
  182. LigaSr4 = 0;
  183. Duracao--;
  184. }
  185. Duracao = Tempo;
  186. LigaSr1 = 4;
  187. }
  188. }
  189. }
  190. // Loop ---------------------------------------------------------------
  191. void loop()
  192. {
  193. Mostrarelogio();
  194. delay(1000);
  195. Dia_irriga();
  196. Calc_Inicio();
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement