Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Nome do Projeto: Chocadeira
- Nome do Aquivo: Choca_DHT11_V01.ino
- Dependencias: DHT.h Biblioteca de DHT11
- LiquidCrystal.h Biblioteca de LCD
- MCU: ATmega
- Board: Arduino Uno/Mega/Mini
- Compilador N/A
- IDE: Arduino IDE 1.0.6
- Hardware: Arduino UNO/MEGA/Mini
- Escrito por: Rui Viana
- Data: 28/06/2015
- Uso: Didático
- Desenhos Chocadeira_DHT11.jpg
- Copyright @ N/A
- Este programa é software livre;
- e é distribuído na esperança que possa ser útil, mas SEM QUALQUER GARANTIA;
- mesmo sem a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM DETERMINADO FIM.
- REVISIONS: (latest entry first)
- 2015-06-28 - Choca_DHT11_V01.ino - First release
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Descricão:
- Este código utilza a biblioteca DHT.h para ler sensores de humidade e de temperatura.
- E a biblioteca LiquidCrystal.h para mostrar a temperatura e a humidade no diplay LCD.
- Compara o valor da leitura com o valor programado, e define se liga ou desliga o rele
- que alimenta as resistencias de aquecimento.
- Tem dois botoes, um para aumentar e outro para diminuir a programação da temperatura
- */
- //************ Variaveis e constantes ************
- #include <LiquidCrystal.h> // Inclui a biblioteca do LCD
- #include "DHT.h" // Inclui a biblioteca do DHT11
- #define DHTPIN A1 // pino que estamos conectado
- #define DHTTYPE DHT11 // DHT 11
- DHT dht(DHTPIN, DHTTYPE);
- LiquidCrystal lcd( 7, 8, 9, 10, 11, 12); // Pinos do LCD
- const int Rele = 13; // Pino de Saída
- const int Up = 2; // Pino do switch de Up
- const int Dn = 3; // Pino do switch de Dn
- float TempProg = 27; // Variavel com temperatura programada
- long debouncing_time = 15; // Debouncing Time in Milliseconds
- volatile unsigned long last_micros; // Variavel para deboucing
- float celsius; // Varialvel para guardar valor de temperatura
- byte humidade; // Varialvel para guardar valor de humidade
- //*********************** Setup *******************
- void setup()
- {
- lcd.begin(16, 2); // Inicia o LCD com dimensões 16x2(Colunas x Linhas)
- pinMode(Rele, OUTPUT); // Port como saída
- digitalWrite(Rele, LOW); // Desliga Rele
- pinMode(Up, INPUT_PULLUP); // Port do switch Up como entrada e Pull-Up
- pinMode(Dn, INPUT_PULLUP); // Port do switch Dn como entrada e Pull-Up
- dht.begin(); // inicializa o Sensor
- delay(1000); // Aguarda 1 seg antes de acessar as informações do sensor
- attachInterrupt(1, PressUp, RISING); // Interrupt de botão ao ficar HIGH o pino 3
- attachInterrupt(0, PressDn, RISING); // Interrupt de botão ao ficar HIGH o pino 2
- lcd.clear(); // Limpa do buffer do LCD
- lcd.setCursor(0, 0); // Seleciona posição 0 da linha 0
- lcd.print("Chocadeira"); // Imprime texto
- lcd.setCursor(11, 1); // Seleciona posição 0 da linha 0
- lcd.print(TempProg); // Imprime variavel
- }
- //*************** Rotina PressUp *****************
- void PressUp() // Rotina chamada pela interrupcao do botão de aumento
- {
- if((long)(micros() - last_micros) >= debouncing_time * 1000) // Tempo de debouncing
- {
- TempProg = TempProg + 0.1; // Incrementa temperatura em 0,01 oC
- lcd.setCursor(11, 1); // Seleciona posição 0 da linha 0
- lcd.print(TempProg); // Imprime variavel
- last_micros = micros(); // Tempo de debouncing
- }
- }
- //*************** Rotina PressDn *****************
- void PressDn() // Rotina chamada pela interrupcao do botão de reducao
- {
- if((long)(micros() - last_micros) >= debouncing_time * 1000) // Tempo de debouncing
- {
- TempProg = TempProg - 0.1; // Decrementa temperatura em 0,01 oC
- lcd.setCursor(11, 1); // Seleciona posição 0 da linha 0
- lcd.print(TempProg); // Imprime variavel
- last_micros = micros(); // Tempo de debouncing
- }
- }
- //*********************** Loop ********************
- void loop()
- {
- celsius = dht.readTemperature(); // Le temperatura no DHT11
- humidade = dht.readHumidity(); // Le humidade no DHT11
- lcd.setCursor(11, 0); // Seleciona posição 0 da linha 0
- lcd.print("H "); // Imprime texto
- lcd.print(humidade); // Imprime humidade
- if (celsius >= TempProg) // Faça se a temperatura for menor que a programada
- digitalWrite(Rele, LOW); // Desliga Rele como entrada e Pull-Up
- else // Ou se não for
- digitalWrite(Rele, HIGH); // Liga Rele como entrada e Pull-Up
- lcd.setCursor(0, 1); // Seleciona posição 0 da linha 0
- lcd.print(celsius); // Imprime a gemperatura
- lcd.setCursor(6, 1); // Seleciona posição 6 da linha 0
- if (digitalRead(Rele) == 1) // Faça se o rele tiver operado
- lcd.print("Lig "); // Imprime texto
- else // Ou se não tiver
- lcd.print("Desl"); // Imprime texto
- delay(200);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement