// Este código faz a leitura de dois sensores de temperatura e umidade (DHT22).
// Dependendo da temperatura lida, ele acende ou apaga dois LEDs conectados ao sistema.
// Inclui a biblioteca DHT.h que fornece funções para interagir com o sensor DHT
#include <DHT.h>
// Define o pino de conexão do primeiro sensor DHT22
#define pinoDHT 23
// Define o tipo de sensor usado (DHT22)
#define modelo DHT22
// Define o pino de conexão do LED 1
#define pinoLED 22
// Define o pino de conexão do LED 2
#define pinoLED2 2
// Define o pino de conexão do segundo sensor DHT22
#define pinoDHT2 19
// Inicializa os objetos DHT para os dois sensores, associando-os aos seus respectivos pinos e tipo
DHT dht(pinoDHT, modelo);
DHT dht2(pinoDHT2, modelo);
// Declara as variáveis globais para armazenar os valores de umidade e temperatura dos sensores
float dadoUmidade, dadoTemperatura, dadoUmidade2, dadoTemperatura2;
// Declara uma variável global para armazenar o tempo inicial (em milissegundos)
unsigned long tempoInicial;
void setup() {
// Inicia a comunicação serial para exibir informações no monitor serial
Serial.begin(115200);
// Configura os pinos dos LEDs como saída
pinMode(pinoLED, OUTPUT);
pinMode(pinoLED2, OUTPUT);
// Imprime uma mensagem de inicialização no monitor serial
Serial.println("Sistema iniciando...");
// Inicializa os sensores DHT
dht.begin();
dht2.begin();
// Armazena o tempo atual como o tempo inicial
tempoInicial = millis();
}
void loop() {
// Lê a umidade e a temperatura do primeiro sensor DHT22
dadoUmidade = dht.readHumidity();
dadoTemperatura = dht.readTemperature();
// Lê a umidade e a temperatura do segundo sensor DHT22
dadoUmidade2 = dht2.readHumidity();
dadoTemperatura2 = dht2.readTemperature();
// Obtém o tempo atual em milissegundos
unsigned long tempoAtual = millis();
// Verifica se 500 milissegundos se passaram desde a última leitura
if (tempoAtual - tempoInicial >= 500) {
// Atualiza o tempo inicial para o tempo atual
tempoInicial = tempoAtual;
// Imprime a umidade e a temperatura lidas pelo primeiro sensor no monitor serial
Serial.print("1.Umidade: ");
Serial.print(dadoUmidade);
Serial.println("%");
Serial.print("1.Temperatura: ");
Serial.print(dadoTemperatura);
Serial.println("°C");
// Imprime a umidade e a temperatura lidas pelo segundo sensor no monitor serial
Serial.print("2.Umidade:");
Serial.print(dadoUmidade2);
Serial.println("%");
Serial.print("2.Temperatura ");
Serial.print(dadoTemperatura2);
Serial.println("°C");
}
// Controle do LED 1: Acende se a temperatura do primeiro sensor for 23 graus ou mais, caso contrário, apaga
if (dadoTemperatura >= 23) {
digitalWrite(pinoLED, HIGH); // Acende o LED
} else {
digitalWrite(pinoLED, LOW); // Apaga o LED
}
// Controle do LED 2: Acende se a temperatura do segundo sensor for 25 graus ou mais, caso contrário, apaga
if (dadoTemperatura2 >= 25) {
digitalWrite(pinoLED2, HIGH); // Acende o LED
} else {
digitalWrite(pinoLED2, LOW); // Apaga o LED
}
}