// Definição dos pinos
const int rele1 = 2; // Pino do Relé 1
const int rele2 = 3; // Pino do Relé 2
const int rele3 = 4; // Pino do Relé 3
const int rele4 = 5; // Pino do Relé 4
const int sensorPresenca1 = 6; // Sensor de Presença 1
const int sensorPresenca2 = 7; // Sensor de Presença 2
const int sensorPorta = 8; // Sensor Magnético da Porta
const int botoeira = 9; // Botoeira
// Variáveis para controle
unsigned long tempoUltimoMovimento = 0; // Inicializa como
bool movimentoDetectado = false;
void setup() {
// Configura os pinos como saída
pinMode(rele1, OUTPUT);
pinMode(rele2, OUTPUT);
pinMode(rele3, OUTPUT);
pinMode(rele4, OUTPUT);
// Configura os pinos como entrada
pinMode(sensorPresenca1, INPUT);
pinMode(sensorPresenca2, INPUT);
pinMode(sensorPorta, INPUT);
pinMode(botoeira, INPUT_PULLUP); // Botoeira com resistor pull-up
// Inicializa os relés desligados
desligarRele();
}
void loop() {
// Verifica se a porta está aberta
if (digitalRead(sensorPorta) == HIGH) {
// A porta está aberta, verifica movimento ou botoeira
if (digitalRead(sensorPresenca1) == HIGH || digitalRead(sensorPresenca2) == HIGH || digitalRead(botoeira) == LOW) {
// Movimento detectado ou botoeira acionada
movimentoDetectado = true;
tempoUltimoMovimento = millis(); // Atualiza o tempo do último movimento
ligarRele(); // Liga os relés
}
// Verifica se passou 2 minutos desde o último movimento
if (movimentoDetectado && (millis() - tempoUltimoMovimento >= 120000)) {
// Se não houver movimento por 2 minutos, desliga os relés
desligarRele();
movimentoDetectado = false; // Reseta a variável
}
} else {
// A porta está fechada, desliga os relés
desligarRele();
}
}
void ligarRele() {
digitalWrite(rele1, HIGH);
digitalWrite(rele2, HIGH);
digitalWrite(rele3, HIGH);
digitalWrite(rele4, HIGH);
}
void desligarRele() {
digitalWrite(rele1, LOW);
digitalWrite(rele2, LOW);
digitalWrite(rele3, LOW);
digitalWrite(rele4, LOW);
}