//Livrarias necessárias
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
//Pinos de ligação
LiquidCrystal_I2C lcd(0x27, 16, 2); //Inicia o display no endereço 0x3F
//SoftwareSerial bluetooth(2, 3); //rx 3;tx 2
#define DHTPIN 12 //Sensor de temperatura/humidade
#define Buzer 5 //Alarme sonoro
#define Lverde 2 //led verde
#define Lvermelho 3 //led vermelho
#define AC 8 //sistema de climatização
#define AC1 9
#define AC2 10
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE); // criação do objeto dht de sensor temperatura e humidade
unsigned long timer, timer1; //temporizadores
void setup() {
pinMode(Buzer, OUTPUT); //inicialização do alarme sonoro
pinMode(Lverde, OUTPUT); //inicilaização dos led
pinMode(Lvermelho, OUTPUT);
pinMode(AC, OUTPUT); //inicialização do sistema de climatização
pinMode(AC1, OUTPUT);
pinMode(AC2, OUTPUT);
timer = millis(); //temporizador inicial
dht.begin(); //inicialização do sensor temperatura/humidade
//bluetooth.begin(9600); //inicialização do bluetooth
lcd.init(); //inicialização do lcd
lcd.backlight(); //iluminazação do lcd
}
void loop() {
delay(2000); //tempo entre leituras
float h = dht.readHumidity(); //leitura da humidade
float t = dht.readTemperature(); //leitura da temperatura
//Escrita dos valores no lcd
lcd.setCursor(0, 0);
lcd.print("Humidade: ");
lcd.print(h);
lcd.print("% ");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(t);
lcd.print((char)223);
lcd.print("C ");
//Envio dos valores por bluetooth
//bluetooth.print(t);
//bluetooth.print(";");
//bluetooth.print(h);
//bluetooth.println(";");
//Condições para arranque do sistema de climatização e alarme(humidade entre 35% e 45% e temperatura entre 18ºC e 26ºC)
if ((h < 60 || h > 80) || (t < 16 || t > 26)) {
timer1 = millis(); //temporizador secundario
digitalWrite(AC, HIGH); //inicialização do sistema de climatização
digitalWrite(AC1, HIGH);
digitalWrite(AC2,LOW);
if ((timer1 - timer) > 10000) { //tempo após o qual inicia o alarme
digitalWrite(Lvermelho, HIGH);
digitalWrite(Lverde, LOW);
//Inicio do alarme sonoro
tone(Buzer, 330);
delay(500);
noTone(Buzer);
delay(500);
}
} else {
//Desliga o alarme e volta ao estado inicial
digitalWrite(AC, LOW);
digitalWrite(AC1,LOW);
digitalWrite(Lvermelho, LOW);
digitalWrite(Lverde, HIGH);
noTone(Buzer);
timer = millis();
}
}