#include <LiquidCrystal.h>
#include <DHT.h>
#define DHTPIN 9 // Pino digital onde está conectado o DHT22
#define DHTTYPE DHT22 // Tipo do sensor DHT
DHT dht(DHTPIN, DHTTYPE);
// Inicialização dos pinos
int led_verde_pin = 13; // Pino para o LED Verde
int led_amarelo_pin = 12; // Pino para o LED Amarelo
int led_vermelho_pin = 11; // Pino para o LED Vermelho
int ldr_pin = A0; // Pino para o sensor LDR
int buzzer_pin = 8; // Pino para o Buzzer
// Inicialização do display LCD
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // Pinos RS, E, D4, D5, D6, D7
void mostrarLogo() {
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("Synthica");
delay(2000); // Espera 2 segundos para mostrar o logo
}
void setup() {
pinMode(led_verde_pin, OUTPUT);
pinMode(led_amarelo_pin, OUTPUT);
pinMode(led_vermelho_pin, OUTPUT);
pinMode(buzzer_pin, OUTPUT); // Configura o pino do Buzzer como saída
lcd.begin(16, 2); // Inicializa o display LCD com 16 colunas e 2 linhas
dht.begin(); // Inicializa o sensor DHT22~
Serial.begin(9600);
mostrarLogo(); // Chama a função para mostrar o logo
}
void loop() {
// Lê o valor do sensor LDR e reescala para um intervalo de 0 a 100
int luminosidade = map(analogRead(ldr_pin), 0, 1023, 0, 100);
Serial.print("Luminosidade: ");
Serial.println(luminosidade);
// Verifica a luminosidade e controla os LEDs, o buzzer e o display
if (luminosidade < 30) {
// Ambiente escuro
digitalWrite(led_verde_pin, HIGH);
digitalWrite(led_amarelo_pin, LOW);
digitalWrite(led_vermelho_pin, LOW);
digitalWrite(buzzer_pin, LOW); // Desliga o Buzzer
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Ambiente escuro");
lcd.setCursor(0, 1);
Serial.println("Ambiente escuro");
} else if (luminosidade >= 30 && luminosidade < 70) {
// Ambiente a meia luz
digitalWrite(led_verde_pin, LOW);
digitalWrite(led_amarelo_pin, HIGH);
digitalWrite(led_vermelho_pin, LOW);
digitalWrite(buzzer_pin, LOW); // Desliga o Buzzer
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Ambiente a meia");
lcd.setCursor(0, 1);
lcd.print("luz");
Serial.println("Ambiente a meia luz");
} else {
// Ambiente muito claro
digitalWrite(led_verde_pin, LOW);
digitalWrite(led_amarelo_pin, LOW);
digitalWrite(led_vermelho_pin, HIGH);
digitalWrite(buzzer_pin, HIGH); // Liga o Buzzer
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Ambiente claro");
lcd.setCursor(0, 1);
Serial.println("Ambiente muito claro");
}
delay(2000); // Espera 2 segundos antes de ler a temperatura
// Lê a temperatura e umidade do sensor DHT22
float temperatura = dht.readTemperature();
float umidade = dht.readHumidity();
// Exibe a temperatura no display LCD
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Temp. = ");
lcd.print(temperatura);
lcd.print("C");
// Verifica se a temperatura está dentro da faixa ideal (10°C a 15°C)
if (temperatura >= 10 && temperatura <= 15) {
lcd.setCursor(0, 0);
lcd.print("Temp. OK");
} else if (temperatura > 15) {
// Temperatura alta
lcd.setCursor(0, 0);
lcd.print("Temp. Alta");
digitalWrite(led_amarelo_pin, HIGH); // Acende o LED Amarelo
digitalWrite(buzzer_pin, HIGH); // Liga o Buzzer
} else {
// Temperatura baixa
lcd.setCursor(0, 0);
lcd.print("Temp. Baixa");
digitalWrite(led_amarelo_pin, HIGH); // Acende o LED Amarelo
digitalWrite(buzzer_pin, HIGH); // Liga o Buzzer
}
delay(2000); // Espera 2 segundos antes de ler a temperatura
// Exibe a umidade no display LCD
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Umid. = ");
lcd.print(umidade);
lcd.print("%");
// Verifica se a umidade está dentro da faixa ideal (50% a 70%)
if (umidade >= 50 && umidade <= 70) {
lcd.setCursor(0, 0);
lcd.print("Umidade OK");
} else if (umidade > 70) {
// Umidade alta
lcd.setCursor(0, 0);
lcd.print("Umidade Alta");
digitalWrite(led_vermelho_pin, HIGH); // Acende o LED Vermelho
digitalWrite(buzzer_pin, HIGH); // Liga o Buzzer
} else {
lcd.setCursor(0, 0);
lcd.print("Umidade Baixa");
digitalWrite(led_vermelho_pin, HIGH); // Acende o LED Vermelho
digitalWrite(buzzer_pin, HIGH); // Liga o Buzzer
}
delay(2000); // Espera 2 segundos antes de ler a luminosidade novamente
}