Advertisement
RuiViana

Chocadeira_DHT11

Jun 28th, 2015
808
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.28 KB | None | 0 0
  1. /*
  2. Nome do Projeto: Chocadeira
  3. Nome do Aquivo: Choca_DHT11_V01.ino
  4. Dependencias: DHT.h Biblioteca de DHT11
  5. LiquidCrystal.h Biblioteca de LCD
  6. MCU: ATmega
  7. Board: Arduino Uno/Mega/Mini
  8. Compilador N/A
  9. IDE: Arduino IDE 1.0.6
  10. Hardware: Arduino UNO/MEGA/Mini
  11. Escrito por: Rui Viana
  12. Data: 28/06/2015
  13. Uso: Didático
  14. Desenhos Chocadeira_DHT11.jpg
  15. Copyright @ N/A
  16.  
  17. Este programa é software livre;
  18. e é distribuído na esperança que possa ser útil, mas SEM QUALQUER GARANTIA;
  19. mesmo sem a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM DETERMINADO FIM.
  20.  
  21. REVISIONS: (latest entry first)
  22. 2015-06-28 - Choca_DHT11_V01.ino - First release
  23. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  24. Descricão:
  25.  
  26. Este código utilza a biblioteca DHT.h para ler sensores de humidade e de temperatura.
  27. E a biblioteca LiquidCrystal.h para mostrar a temperatura e a humidade no diplay LCD.
  28. Compara o valor da leitura com o valor programado, e define se liga ou desliga o rele
  29. que alimenta as resistencias de aquecimento.
  30. Tem dois botoes, um para aumentar e outro para diminuir a programação da temperatura
  31. */
  32. //************ Variaveis e constantes ************
  33.  
  34. #include <LiquidCrystal.h> // Inclui a biblioteca do LCD
  35. #include "DHT.h" // Inclui a biblioteca do DHT11
  36. #define DHTPIN A1 // pino que estamos conectado
  37. #define DHTTYPE DHT11 // DHT 11
  38. DHT dht(DHTPIN, DHTTYPE);
  39. LiquidCrystal lcd( 7, 8, 9, 10, 11, 12); // Pinos do LCD
  40. const int Rele = 13; // Pino de Saída
  41. const int Up = 2; // Pino do switch de Up
  42. const int Dn = 3; // Pino do switch de Dn
  43. float TempProg = 27; // Variavel com temperatura programada
  44. long debouncing_time = 15; // Debouncing Time in Milliseconds
  45. volatile unsigned long last_micros; // Variavel para deboucing
  46. float celsius; // Varialvel para guardar valor de temperatura
  47. byte humidade; // Varialvel para guardar valor de humidade
  48. //*********************** Setup *******************
  49. void setup()
  50. {
  51. lcd.begin(16, 2); // Inicia o LCD com dimensões 16x2(Colunas x Linhas)
  52. pinMode(Rele, OUTPUT); // Port como saída
  53. digitalWrite(Rele, LOW); // Desliga Rele
  54. pinMode(Up, INPUT_PULLUP); // Port do switch Up como entrada e Pull-Up
  55. pinMode(Dn, INPUT_PULLUP); // Port do switch Dn como entrada e Pull-Up
  56. dht.begin(); // inicializa o Sensor
  57. delay(1000); // Aguarda 1 seg antes de acessar as informações do sensor
  58. attachInterrupt(1, PressUp, RISING); // Interrupt de botão ao ficar HIGH o pino 3
  59. attachInterrupt(0, PressDn, RISING); // Interrupt de botão ao ficar HIGH o pino 2
  60.  
  61. lcd.clear(); // Limpa do buffer do LCD
  62. lcd.setCursor(0, 0); // Seleciona posição 0 da linha 0
  63. lcd.print("Chocadeira"); // Imprime texto
  64. lcd.setCursor(11, 1); // Seleciona posição 0 da linha 0
  65. lcd.print(TempProg); // Imprime variavel
  66. }
  67. //*************** Rotina PressUp *****************
  68. void PressUp() // Rotina chamada pela interrupcao do botão de aumento
  69. {
  70. if((long)(micros() - last_micros) >= debouncing_time * 1000) // Tempo de debouncing
  71. {
  72. TempProg = TempProg + 0.1; // Incrementa temperatura em 0,01 oC
  73. lcd.setCursor(11, 1); // Seleciona posição 0 da linha 0
  74. lcd.print(TempProg); // Imprime variavel
  75. last_micros = micros(); // Tempo de debouncing
  76. }
  77. }
  78. //*************** Rotina PressDn *****************
  79. void PressDn() // Rotina chamada pela interrupcao do botão de reducao
  80. {
  81. if((long)(micros() - last_micros) >= debouncing_time * 1000) // Tempo de debouncing
  82. {
  83. TempProg = TempProg - 0.1; // Decrementa temperatura em 0,01 oC
  84. lcd.setCursor(11, 1); // Seleciona posição 0 da linha 0
  85. lcd.print(TempProg); // Imprime variavel
  86. last_micros = micros(); // Tempo de debouncing
  87. }
  88. }
  89. //*********************** Loop ********************
  90. void loop()
  91. {
  92. celsius = dht.readTemperature(); // Le temperatura no DHT11
  93. humidade = dht.readHumidity(); // Le humidade no DHT11
  94.  
  95. lcd.setCursor(11, 0); // Seleciona posição 0 da linha 0
  96. lcd.print("H "); // Imprime texto
  97. lcd.print(humidade); // Imprime humidade
  98. if (celsius >= TempProg) // Faça se a temperatura for menor que a programada
  99. digitalWrite(Rele, LOW); // Desliga Rele como entrada e Pull-Up
  100. else // Ou se não for
  101. digitalWrite(Rele, HIGH); // Liga Rele como entrada e Pull-Up
  102. lcd.setCursor(0, 1); // Seleciona posição 0 da linha 0
  103. lcd.print(celsius); // Imprime a gemperatura
  104. lcd.setCursor(6, 1); // Seleciona posição 6 da linha 0
  105. if (digitalRead(Rele) == 1) // Faça se o rele tiver operado
  106. lcd.print("Lig "); // Imprime texto
  107. else // Ou se não tiver
  108. lcd.print("Desl"); // Imprime texto
  109. delay(200);
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement