#include <DHT.h>
#define DHTPIN 2 // Pino onde o sensor DHT22 está conectado
#define DHTTYPE DHT22 // Definindo o tipo de sensor como DHT22
DHT dht(DHTPIN, DHTTYPE);
// Definição dos pinos dos LEDs controlados pela temperatura e umidade
#define LED_TEMP_HIGH 11 // LED que acende quando a temperatura > 24°C
#define LED_TEMP_LOW 10 // LED que acende quando a temperatura < 18°C
#define LED_HUMIDITY 8 // LED que acende quando a umidade < 70%
// Definição dos pinos para o sensor de luminosidade (LDR)
const int ldrpino = A1; // Pino onde o LDR está conectado
const int pinoled3 = 9; // Pino do LED controlado pelo LDR
int limiarLdr = 500; // Limiar de luminosidade para acender o LED
void setup() {
// Configuração dos pinos dos LEDs como saídas
pinMode(LED_TEMP_HIGH, OUTPUT);
pinMode(LED_TEMP_LOW, OUTPUT);
pinMode(LED_HUMIDITY, OUTPUT);
pinMode(pinoled3, OUTPUT); // LED controlado pelo LDR
Serial.begin(9600);
dht.begin();
}
void loop() {
// Leitura do sensor DHT22
float temp = dht.readTemperature(); // Lê a temperatura
float humidity = dht.readHumidity(); // Lê a umidade
// Verifica se a leitura falhou
if (isnan(temp) || isnan(humidity)) {
Serial.println("Falha ao ler do sensor DHT!");
return;
}
// Controle do LED baseado na temperatura
if (temp > 24) {
digitalWrite(LED_TEMP_HIGH, HIGH); // Liga LED se temp > 24
} else {
digitalWrite(LED_TEMP_HIGH, LOW); // Desliga LED se temp <= 24
}
if (temp < 18) {
digitalWrite(LED_TEMP_LOW, HIGH); // Liga LED se temp < 18
} else {
digitalWrite(LED_TEMP_LOW, LOW); // Desliga LED se temp >= 18
}
// Controle do LED baseado na umidade
if (humidity < 70) {
digitalWrite(LED_HUMIDITY, HIGH); // Liga LED se umidade < 70%
} else {
digitalWrite(LED_HUMIDITY, LOW); // Desliga LED se umidade >= 70%
}
// Leitura e controle do LDR
int ldrValue = analogRead(ldrpino); // Leitura do valor do LDR
Serial.print("LDR value: ");
Serial.println(ldrValue); // Imprime o valor lido do LDR
// Condição para ligar o LED controlado pelo LDR no escuro
if (ldrValue < limiarLdr) { // Se o valor do LDR for menor que 500 (luz fraca ou escuro)
digitalWrite(pinoled3, HIGH); // Liga o LED controlado pelo LDR
} else {
digitalWrite(pinoled3, LOW); // Desliga o LED controlado pelo LDR no claro
}
delay(2000); // Aguarda 2 segundos entre leituras
}