Advertisement
RuiViana

Chocadeira com minutos horas e dias

Dec 15th, 2015
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.41 KB | None | 0 0
  1. // http://pastebin.com/C4HCpHSM#
  2. //************ Variaveis e constantes ************
  3.  
  4. // set pin numbers:
  5. const int relemotor = 10; // the number of the LED pin
  6.  
  7. // Variables will change:
  8. int estadomotor = LOW; // ledState used to set the LED
  9.  
  10. unsigned long interMin = 1900; // (milliseconds) somando linhas de code = +- = 2 segundos
  11. // unsigned long interHora = 3600000; // (milliseconds) hora = +- 3.600 s Seg = 3.600.000 mSeg
  12. // unsigned long interDias = 86400000; // (milliseconds) dia = +- 86.400 s Seg = 86.400.000 mSeg
  13. unsigned long interHora = 14400; // Teste
  14. unsigned long interDias = 28800; // Teste
  15. unsigned long minutos = 0; // will store last time LED was updated
  16. unsigned long horas = 0; // will store last time LED was updated
  17. unsigned long Dias = 0; // will store last time LED was updated
  18.  
  19. boolean flagmotor = 0;
  20.  
  21. #include <LiquidCrystal.h> // Inclui a biblioteca do LCD
  22. #include "DHT.h" // Inclui a biblioteca do DHT11
  23. #define DHTPIN A1 // pino que estamos conectado
  24. #define DHTTYPE DHT22 // DHT 11
  25. DHT dht(DHTPIN, DHTTYPE);
  26. LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Pinos do LCD
  27. const int Rele = 13; // Pino de Saída
  28. const int Up = 2; // Pino do switch de Up
  29. const int Dn = 3; // Pino do switch de Dn
  30. float TempProg = 27; // Variavel com temperatura programada
  31. long debouncing_time = 15; // Debouncing Time in Milliseconds
  32. volatile unsigned long last_micros; // Variavel para deboucing
  33. float celsius; // Varialvel para guardar valor de temperatura
  34. byte humidade; // Varialvel para guardar valor de humidade
  35. //*********************** Setup *******************
  36. void setup()
  37. {
  38. Serial.begin(9600);
  39. // set the digital pin as output:
  40. pinMode(relemotor, OUTPUT);
  41.  
  42. lcd.begin(16, 2); // Inicia o LCD com dimensões 16x2(Colunas x Linhas)
  43. pinMode(Rele, OUTPUT); // Port como saída
  44. digitalWrite(Rele, LOW); // Desliga Rele
  45. pinMode(Up, INPUT_PULLUP); // Port do switch Up como entrada e Pull-Up
  46. pinMode(Dn, INPUT_PULLUP); // Port do switch Dn como entrada e Pull-Up
  47. dht.begin(); // inicializa o Sensor
  48. delay(1000); // Aguarda 1 seg antes de acessar as informações do sensor
  49. attachInterrupt(1, PressUp, RISING); // Interrupt de botão ao ficar HIGH o pino 3
  50. attachInterrupt(0, PressDn, RISING); // Interrupt de botão ao ficar HIGH o pino 2
  51.  
  52. lcd.clear(); // Limpa do buffer do LCD
  53. lcd.setCursor(0, 0); // Seleciona posição 0 da linha 0
  54. lcd.print("Chocadeira"); // Imprime texto
  55. lcd.setCursor(11, 1); // Seleciona posição 0 da linha 0
  56. lcd.print(TempProg); // Imprime variavel
  57. }
  58. //*************** Rotina PressUp *****************
  59. void PressUp() // Rotina chamada pela interrupcao do botão de aumento
  60. {
  61. if((long)(micros() - last_micros) >= debouncing_time * 1000) // Tempo de debouncing
  62. {
  63. TempProg = TempProg + 0.1; // Incrementa temperatura em 0,01 oC
  64. lcd.setCursor(11, 1); // Seleciona posição 0 da linha 0
  65. lcd.print(TempProg); // Imprime variavel
  66. last_micros = micros(); // Tempo de debouncing
  67. }
  68. }
  69. //*************** Rotina PressDn *****************
  70. void PressDn() // Rotina chamada pela interrupcao do botão de reducao
  71. {
  72. if((long)(micros() - last_micros) >= debouncing_time * 1000) // Tempo de debouncing
  73. {
  74. TempProg = TempProg - 0.1; // Decrementa temperatura em 0,01 oC
  75. lcd.setCursor(11, 1); // Seleciona posição 0 da linha 0
  76. lcd.print(TempProg); // Imprime variavel
  77. last_micros = micros(); // Tempo de debouncing
  78. }
  79. }
  80. //*********************** Loop ********************
  81. void loop()
  82. {
  83. celsius = dht.readTemperature(); // Le temperatura no DHT11
  84. humidade = dht.readHumidity(); // Le humidade no DHT11
  85.  
  86. lcd.setCursor(11, 0); // Seleciona posição 0 da linha 0
  87. lcd.print("H "); // Imprime texto
  88. lcd.print(humidade); // Imprime humidade
  89. if (celsius >= TempProg) // Faça se a temperatura for menor que a programada
  90. digitalWrite(Rele, LOW); // Desliga Rele como entrada e Pull-Up
  91. else // Ou se não for
  92. digitalWrite(Rele, HIGH); // Liga Rele como entrada e Pull-Up
  93. lcd.setCursor(0, 1); // Seleciona posição 0 da linha 0
  94. lcd.print(celsius); // Imprime a gemperatura
  95. lcd.setCursor(6, 1); // Seleciona posição 6 da linha 0
  96. if (digitalRead(Rele) == 1) // Faça se o rele tiver operado
  97. lcd.print("Lig "); // Imprime texto
  98. else // Ou se não tiver
  99. lcd.print("Desl"); // Imprime texto
  100. delay(200);
  101.  
  102. if ((millis() - minutos) >= interMin) // Se for maior que interMin
  103. { // faça
  104. minutos = millis(); // Recarrega o valor de millis() em minutos
  105. flagmotor= !flagmotor; // Se tiver ligado, desligue, se tiver desligado, ligue
  106. digitalWrite(relemotor, flagmotor); // Ative relemotor com status de flagmotor
  107. }
  108.  
  109. if ((millis() - horas) >= interHora) // Se for maior que interHora
  110. { // faça
  111. horas = millis(); // Recarrega o valor de millis() em horas
  112. flagmotor= !flagmotor; // ??
  113. digitalWrite(relemotor, flagmotor); // ??
  114. }
  115.  
  116. if ((millis() - Dias) >= interDias) // Se for maior que interDias
  117. { // faça
  118. Dias = millis(); // Recarrega o valor de millis() em Dias
  119. lcd.setCursor(0, 0); // Seleciona posição 0 da linha 0
  120. lcd.print(" Dias "); // Imprime texto
  121. // lcd.print(Dias/86400000); // Imprime numero de dias (Dias/86.400)
  122. lcd.print(Dias/28800); // Valor pra teste (Dias/7.200)
  123. }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement