Advertisement
Guest User

controleAquario

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