Advertisement
rbiagi

controleAquario

Jul 26th, 2017
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.10 KB | None | 0 0
  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3. #include <DS1307.h>
  4. //#include <Ethernet.h>
  5. #include <Thread.h>
  6. #include <ThreadController.h>
  7. #include <OneWire.h>
  8. #include <DallasTemperature.h>
  9.  
  10. // Inicia o DS1307
  11. DS1307 rtc(SDA, SCL);
  12. String HoraAtual;
  13. String DataAtual;
  14. String DiaSemana;
  15.  
  16. // Inicia o LCD
  17. LiquidCrystal_I2C lcd(0x3F, 2 ,1 ,0 ,4 ,5 ,6 ,7 ,3, POSITIVE);
  18.  
  19. // Portas de entrada e saida.
  20. int porta1 = 8; //led Branco
  21. int porta2 = 9; //led Azul
  22. int porta3 = 50; //rele 1 N1
  23. int porta4 = 51; //rele 1 N2
  24. int porta5 = 52; //rele 2 N1
  25. int porta6 = 53; //rele 2 N2
  26.  
  27. //Sensor de temperatura
  28. // Porta do pino de sinal do DS18B20
  29. #define ONE_WIRE_BUS 2
  30. // Define uma instancia do oneWire para comunicacao com o sensor
  31. OneWire oneWire(ONE_WIRE_BUS);
  32. // Armazena temperaturas minima e maxima
  33. float tempMin = 999;
  34. float tempMax = 0;
  35. DallasTemperature sensors(&oneWire);
  36. DeviceAddress sensor1;
  37.  
  38. // Coleta o estado das portas
  39. int S1;
  40. int S2;
  41. int S3;
  42. int S4;
  43. int S5;
  44. int S6;
  45.  
  46. //hora inicio e termino do agendamento
  47. String schedule1 = "22:55:00";
  48. String endSchedule1 = "23:00:00";
  49. String schedule2 = "22:56:00";
  50. String endSchedule2 = "23:01:00";
  51. String schedule3 = "22:57:00";
  52. String endSchedule3 = "23:02:00";
  53. String schedule4 = "22:58:00";
  54. String endSchedule4 = "23:03:00";
  55. String schedule5 = "22:59:00";
  56. String endSchedule5 = "23:04:00";
  57. String schedule6 = "23:00:00";
  58. String endSchedule6 = "23:05:00";
  59.  
  60. void setup(){
  61. Serial.begin(9600);
  62.  
  63. // Seta o LCD para 16x2 caracteres
  64. lcd.begin(16, 2);
  65.  
  66. // Inicializa o objeto RTC
  67. rtc.begin();
  68.  
  69. // Seta o relogio para run-mode
  70. rtc.halt(false);
  71. // A linha abaixo pode ser comentada para usar os valores já armazenados no DS1307
  72. //setdatahora();
  73. // Define SQW/Out rate para 1Hz e habilite SQW
  74. rtc.setSQWRate(SQW_RATE_1);
  75. rtc.enableSQW(true);
  76.  
  77. pinMode(porta1, OUTPUT);
  78. pinMode(porta2, OUTPUT);
  79. pinMode(porta3, OUTPUT);
  80. pinMode(porta4, OUTPUT);
  81. pinMode(porta5, OUTPUT);
  82. pinMode(porta6, OUTPUT);
  83.  
  84. //verifica as portas e desliga
  85. S1 = digitalRead(porta1);
  86. if (S1 == 0){
  87. digitalWrite(porta1, HIGH);
  88. }
  89. S2 = digitalRead(porta2);
  90. if (S2 == 0){
  91. digitalWrite(porta2, HIGH);
  92. }
  93. S3 = digitalRead(porta3);
  94. if (S3 == 0){
  95. digitalWrite(porta3, HIGH);
  96. }
  97. S4 = digitalRead(porta4);
  98. if (S4 == 0){
  99. digitalWrite(porta4, HIGH);
  100. }
  101. S5 = digitalRead(porta5);
  102. if (S5 == 0){
  103. digitalWrite(porta5, HIGH);
  104. }
  105. S6 = digitalRead(porta6);
  106. if (S6 == 0){
  107. digitalWrite(porta6, HIGH);
  108. }
  109.  
  110. //Sensor de Temperatura
  111. sensors.begin();
  112. (!sensors.getAddress(sensor1, 0));
  113. }
  114.  
  115. void loop(){
  116. // Display time centered on the upper line
  117. lcd.setCursor(0, 0);
  118. lcd.print(rtc.getTimeStr());
  119.  
  120. // Display abbreviated Day-of-Week in the lower left corner
  121. lcd.setCursor(0, 1);
  122. lcd.print(rtc.getDOWStr(FORMAT_SHORT));
  123.  
  124. // Display date in the lower right corner
  125. lcd.setCursor(4, 1);
  126. lcd.print(rtc.getDateStr());
  127.  
  128. // Wait one second before repeating :)
  129. delay (1000);
  130. datahora();
  131. schedule();
  132. sensorTemperatura();
  133. }
  134.  
  135. /**************************
  136. * Grava Data e Hora
  137. ***************************/
  138. void setdatahora(){
  139. rtc.setDOW(MONDAY); // Seta dia-da-semana
  140. rtc.setTime(21, 38, 0); // Seta o horario
  141. rtc.setDate(25, 07, 2017); // Seta a data dia/mes/ano
  142. }
  143.  
  144. /**************************
  145. * Coleta os dados de data
  146. * e hora atuais
  147. ***************************/
  148. void datahora(){
  149. HoraAtual = rtc.getTimeStr();
  150. DataAtual = rtc.getDateStr(FORMAT_SHORT);
  151. DiaSemana = rtc.getDOWStr(FORMAT_SHORT);
  152. }
  153.  
  154. /**************************
  155. * Executa o agendamento
  156. ***************************/
  157. void schedule(){
  158. //Schedule 1 - Porta1
  159. if(HoraAtual >= schedule1 && HoraAtual < endSchedule1){
  160. digitalWrite(porta1, LOW);
  161. }
  162. else{
  163. digitalWrite(porta1, HIGH);
  164. }
  165. //Schedule 2 - Porta2
  166. if(HoraAtual >= schedule2 && HoraAtual < endSchedule2){
  167. digitalWrite(porta2, LOW);
  168. }
  169. else{
  170. digitalWrite(porta2, HIGH);
  171. }
  172. //Schedule 3 - Porta3
  173. if(HoraAtual >= schedule3 && HoraAtual < endSchedule3){
  174. digitalWrite(porta3, LOW);
  175. }
  176. else{
  177. digitalWrite(porta3, HIGH);
  178. }
  179. //Schedule 4 - Porta4
  180. if(HoraAtual >= schedule4 && HoraAtual < endSchedule4){
  181. digitalWrite(porta4, LOW);
  182. }
  183. else{
  184. digitalWrite(porta4, HIGH);
  185. }
  186. //Schedule 5 - Porta5
  187. if(HoraAtual >= schedule5 && HoraAtual < endSchedule5){
  188. digitalWrite(porta5, LOW);
  189. }
  190. else{
  191. digitalWrite(porta5, HIGH);
  192. }
  193. //Schedule 6 - Porta6
  194. if(HoraAtual >= schedule6 && HoraAtual < endSchedule6){
  195. digitalWrite(porta6, LOW);
  196. }
  197. else{
  198. digitalWrite(porta6, HIGH);
  199. }
  200. }
  201.  
  202. /*******************************************
  203. sensor de temperatura
  204. ********************************************/
  205. void sensorTemperatura(){
  206. // Le a informacao do sensor
  207. sensors.requestTemperatures();
  208. float tempC = sensors.getTempC(sensor1);
  209.  
  210. // Mostra dados no LCD
  211. lcd.clear();
  212. lcd.setCursor(8,0);
  213. lcd.print(" ");
  214. lcd.print(tempC);
  215. //Simbolo grau
  216. lcd.write(223);
  217. lcd.print("C");
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement