Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // http://pastebin.com/C4HCpHSM#
- //************ Variaveis e constantes ************
- // set pin numbers:
- const int relemotor = 10; // the number of the LED pin
- // Variables will change:
- int estadomotor = LOW; // ledState used to set the LED
- unsigned long interMin = 1900; // (milliseconds) somando linhas de code = +- = 2 segundos
- // unsigned long interHora = 3600000; // (milliseconds) hora = +- 3.600 s Seg = 3.600.000 mSeg
- // unsigned long interDias = 86400000; // (milliseconds) dia = +- 86.400 s Seg = 86.400.000 mSeg
- unsigned long interHora = 14400; // Teste
- unsigned long interDias = 28800; // Teste
- unsigned long minutos = 0; // will store last time LED was updated
- unsigned long horas = 0; // will store last time LED was updated
- unsigned long Dias = 0; // will store last time LED was updated
- boolean flagmotor = 0;
- #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 DHT22 // DHT 11
- DHT dht(DHTPIN, DHTTYPE);
- LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // 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()
- {
- Serial.begin(9600);
- // set the digital pin as output:
- pinMode(relemotor, OUTPUT);
- 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);
- if ((millis() - minutos) >= interMin) // Se for maior que interMin
- { // faça
- minutos = millis(); // Recarrega o valor de millis() em minutos
- flagmotor= !flagmotor; // Se tiver ligado, desligue, se tiver desligado, ligue
- digitalWrite(relemotor, flagmotor); // Ative relemotor com status de flagmotor
- }
- if ((millis() - horas) >= interHora) // Se for maior que interHora
- { // faça
- horas = millis(); // Recarrega o valor de millis() em horas
- flagmotor= !flagmotor; // ??
- digitalWrite(relemotor, flagmotor); // ??
- }
- if ((millis() - Dias) >= interDias) // Se for maior que interDias
- { // faça
- Dias = millis(); // Recarrega o valor de millis() em Dias
- lcd.setCursor(0, 0); // Seleciona posição 0 da linha 0
- lcd.print(" Dias "); // Imprime texto
- // lcd.print(Dias/86400000); // Imprime numero de dias (Dias/86.400)
- lcd.print(Dias/28800); // Valor pra teste (Dias/7.200)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement