#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 4 // Pino ao qual o sensor DHT22 está conectado
#define DHTTYPE DHT22 // Tipo do sensor (DHT22 ou DHT11)
#define mq2Pin = A2; // Pino analógico ao qual o sensor MQ2 está conectado
#define mq2_Digital = 7;
#define greenLedPin = 8; // Pino ao qual o LED verde está conectado
#define redLedPin = 9; // Pino ao qual o LED vermelho está conectado
#define coolerPin = 11; // Pino ao qual o cooler está conectado
#define buzzerPin = 10; // Pino ao qual o buzzer está conectado
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Endereço I2C do display 1602
void setup() {
Serial.begin(9600);
dht.begin();
lcd.begin(16, 2);
lcd.backlight();
pinMode(A2, INPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
}
void loop() {
delay(2000); // Aguarda 2 segundos entre leitura
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Leitura do sensor MQ2
int co2Value = analogRead(A2);
// Verifica se a leitura foi bem-sucedida
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Erro ao ler o sensor DHT!");
return;
}
// Limpa o LCD
lcd.clear();
// Exibe a temperatura e umidade no LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Umidade: ");
lcd.print(humidity);
lcd.print("%");
// Verifica a qualidade do ar
if (co2Value > 500) {
// Qualidade do ar ruim
lcd.setCursor(12, 1);
lcd.print("Ruim");
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(11, HIGH); // Ligar o cooler para circulação de ar
tone(10, 1000); // Emite um tom no buzzer
delay(500); // Aguarda meio segundo
noTone(10); // Desliga o buzzer
} else {
// Qualidade do ar boa
lcd.setCursor(12, 1);
lcd.print("Boa ");
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(11, LOW); // Desligar o cooler
}
delay(5000); // Aguarda 5 segundos antes da próxima leitura
}