//Bibliotecas
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Configuração do display LCD 16x2 com endereço I2C 0x27
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pinos
#define PIN_DIGITO_1 34 // Pino analógico para o sensor de umidade
#define PIN_DIGITO_2 35
#define PIN_DIGITO_3 32
#define PIN_DIGITO_4 33
#define PIN_FECHADURA 2 // Pino digital para a bomba (e LED azul)
#define BT_ABRIR 15
int LEITURA_1 = 0; // Valor lido do sensor de umidade
int LEITURA_2 = 0;
int LEITURA_3 = 0;
int LEITURA_4 = 0; // Valor do limite definido pelo potenciômetro
int senha_1_ok = 1;
int senha_2_ok = 2;
int senha_3_ok = 3;
int senha_4_ok = 4;
//byte BT_ABRIR = 0;
void setup() {
// Inicializa a comunicação serial
Serial.begin(115200);
// Inicializa o display LCD
lcd.init();
lcd.backlight();
// Mensagem inicial
//lcd.setCursor(0, 0);
//lcd.print("Limite: ");
//lcd.setCursor(9, 0);
//lcd.print(limiteUmidade);
//lcd.print("% ");
// Configura os pinos
pinMode(PIN_DIGITO_1, INPUT);
pinMode(PIN_DIGITO_2, INPUT);
pinMode(PIN_DIGITO_3, INPUT);
pinMode(PIN_DIGITO_4, INPUT);
pinMode(BT_ABRIR, INPUT_PULLUP);
pinMode(PIN_FECHADURA, OUTPUT);
digitalWrite(PIN_FECHADURA, LOW); // Inicia com a bomba desligada
// Pinos analógicos não precisam de modo, são inputs por padrão
Serial.println("Sistema de Irrigação Automática Iniciado");
}
void loop() {
// Lê os valores dos sensores
LEITURA_1 = analogRead(PIN_DIGITO_1);
int senha_1 = map(LEITURA_1, 0, 4095, 0, 9);
LEITURA_2 = analogRead(PIN_DIGITO_2);
int senha_2 = map(LEITURA_2, 0, 4095, 0, 9);
LEITURA_3 = analogRead(PIN_DIGITO_3);
int senha_3 = map(LEITURA_3, 0, 4095, 0, 9);
LEITURA_4 = analogRead(PIN_DIGITO_4);
int senha_4 = map(LEITURA_4, 0, 4095, 0, 9);
lcd.setCursor(0, 0);
lcd.print(senha_1);
lcd.setCursor(2, 0);
lcd.print(senha_2);
lcd.setCursor(4, 0);
lcd.print(senha_3);
lcd.setCursor(6, 0);
lcd.print(senha_4);
int bt = digitalRead(BT_ABRIR);
if(bt == LOW){
if(senha_1 == senha_1_ok && senha_2 == senha_2_ok && senha_3 == senha_3_ok && senha_4 == senha_4_ok){
lcd.setCursor(0, 1);
lcd.print("Fechadura Aberta!");
delay(2000);
lcd.setCursor(0 1);
lcd.print(" ");
}else{
lcd.setCursor(0, 1);
lcd.print("Senha ERRADA!");
delay(2000);
lcd.setCursor(0, 1);
lcd.print(" ");
}
}
// Verifica se precisa ligar a bomba
//if (umidadeSolo < limiteUmidade && !bombaLigada) {
//digitalWrite(PIN_BOMBA, LOW); // Liga a bomba
//bombaLigada = true;
//Serial.println("Bomba LIGADA - Solo muito seco");
//}
// Verifica se precisa desligar a bomba
//else if (umidadeSolo >= limiteUmidade && bombaLigada) {
//digitalWrite(PIN_BOMBA, HIGH); // Desliga a bomba
//bombaLigada = false;
//Serial.println("Bomba DESLIGADA - Solo úmido o suficiente");
// }
// Exibe os valores no monitor serial
//Serial.print("Umidade do Solo: ");
//Serial.print(umidadeSolo);
//Serial.print("% | Padrão: ");
//Serial.print(limiteUmidade);
//Serial.print("% | Bomba: ");
//Serial.println(bombaLigada ? "LIGADA" : "DESLIGADA");
// Pequena pausa para evitar leituras muito rápidas
delay(100);
}