//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();
  }
}
$abcdeabcde151015202530fghijfghij