-
Inicialização: Todos os componentes são inicializados em estado seguro (portas travadas, LEDs e buzzer desligados).
-
Travamento das Portas: Acionamento: Pressionar o botão de travamento ativa os motores das portas para girar durante 2 segundos, efetuando o travamento. Os LEDs das setas piscam duas vezes para confirmar o travamento.
-
Destravamento das Portas: Acionamento: Pressionar o botão de destravamento faz os motores das portas girarem por 2 segundos no sentido oposto, destravando as portas. Os LEDs do farol baixo acendem e ficam acesos por 20 segundos.
-
Detecção de Abertura de Porta Não Autorizada (Furto):
Condição de Detecção:
Se um interruptor de porta é ativado sem o prévio destravamento:
O buzzer é acionado.
Os LEDs das setas piscam.
Manutenção do Alerta:
O buzzer e as setas continuam ativos enquanto a porta estiver aberta.
- Detecção de Intrusão Sem Abertura de Portas (Quebra de Vidro):
Condição de Detecção:
Se o sensor PIR detecta movimento sem prévio destravamento:
O buzzer soa.
Os LEDs das setas piscam.
Manutenção do Alerta:
O sistema mantém o alarme enquanto detectar presença.
+---------------+
| Início |
+-------+-------+
|
+-------v-------+
| Ler entradas |
| (interruptores|
| botões, PIR) |
+----------------+
|
+---------------v---------------+
| Botão Armar pressionado? |
| |
+--+--+ +--+--+
| | | |
| Sim | | Não |
| | | |
+--+--+ +--+--+
| |
| +-----------------------+-------------------+
| | | |
| +-----v------+ +-------v-------+ +-------v-------+
| | Travar | | | | Botão Desarmar|
| | portas | | | | pressionado? |
| | Piscar setas| | | | |
| | 2x | | Não | +-------+-------+
| +-------+-----+ | | |
+----------|--------------+ | |
| | | Sim
| | |
+---------------+----------------+ |
| |
| |
+-------v-------+ |
| Destravar | |
| portas | |
| Acender faróis| |
| 20 segundos | |
+----------------+ |
| |
+---------------------------+
|
+------------v-----------+
| Porta aberta ou |
| presença detectada |
| enquanto armado? |
| |
+--+--+ +--+--+
| | | |
| Sim | | Não |
| | | |
+--+--+ +--+--+
| |
| +----------------+ |
| | Acionar buzzer | |
+---+ Piscar setas +---+
| continuamente |
+----------------+
// Código Arduino comentado, implementando a lógica do alarme
// Definições de pinos
const int interruptor1 = 2;
const int interruptor2 = 3;
const int botaoArmar = 4;
const int botaoDesarmar = 5;
const int sensorPIR = 6;
const int buzzer = 7;
const int seta1 = 8;
const int seta2 = 9;
const int seta3 = 10;
const int seta4 = 11;
const int farolBaixo1 = 12;
const int farolBaixo2 = 13;
const int motorTrava1 = 14;
const int motorTrava2 = 15;
// Variáveis de estado
bool armado = false;
bool porta1Aberta = false;
bool porta2Aberta = false;
bool presencaDetectada = false;
void setup() {
// Configurar pinos de entrada e saída
pinMode(interruptor1, INPUT_PULLUP);
pinMode(interruptor2, INPUT_PULLUP);
pinMode(botaoArmar, INPUT_PULLUP);
pinMode(botaoDesarmar, INPUT_PULLUP);
pinMode(sensorPIR, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(seta1, OUTPUT);
pinMode(seta2, OUTPUT);
pinMode(seta3, OUTPUT);
pinMode(seta4, OUTPUT);
pinMode(farolBaixo1, OUTPUT);
pinMode(farolBaixo2, OUTPUT);
pinMode(motorTrava1, OUTPUT);
pinMode(motorTrava2, OUTPUT);
}
void loop() {
// Verificar estado das portas
porta1Aberta = !digitalRead(interruptor1);
porta2Aberta = !digitalRead(interruptor2);
// Verificar presença detectada pelo sensor PIR
presencaDetectada = digitalRead(sensorPIR);
// Verificar acionamento dos botões
if (digitalRead(botaoArmar) == LOW) {
armarAlarme();
} else if (digitalRead(botaoDesarmar) == LOW) {
desarmarAlarme();
}
// Verificar condições de furto
if (armado && (porta1Aberta || porta2Aberta || presencaDetectada)) {
acionarAlarme();
}
}
void armarAlarme() {
armado = true;
// Travar portas
digitalWrite(motorTrava1, HIGH);
digitalWrite(motorTrava2, HIGH);
delay(2000); // Motores giram por 2 segundos
digitalWrite(motorTrava1, LOW);
digitalWrite(motorTrava2, LOW);
// Piscar setas 2 vezes
piscarSetas();
delay(500);
piscarSetas();
}
void desarmarAlarme() {
armado = false;
// Destravar portas
digitalWrite(motorTrava1, HIGH);
digitalWrite(motorTrava2, HIGH);
delay(2000); // Motores giram por 2 segundos
digitalWrite(motorTrava1, LOW);
digitalWrite(motorTrava2, LOW);
// Acender faróis baixos por 20 segundos
digitalWrite(farolBaixo1, HIGH);
digitalWrite(farolBaixo2, HIGH);
delay(20000);
digitalWrite(farolBaixo1, LOW);
digitalWrite(farolBaixo2, LOW);
}
void acionarAlarme() {
// Acionar buzzer
digitalWrite(buzzer, HIGH);
// Piscar setas continuamente
while (armado && (porta1Aberta || porta2Aberta || presencaDetectada)) {
piscarSetas();
delay(500);
}
// Desativar buzzer
digitalWrite(buzzer, LOW);
}
void piscarSetas() {
digitalWrite(seta1, HIGH);
digitalWrite(seta2, HIGH);
digitalWrite(seta3, HIGH);
digitalWrite(seta4, HIGH);
delay(500);
digitalWrite(seta1, LOW);
digitalWrite(seta2, LOW);
digitalWrite(seta3, LOW);
digitalWrite(seta4, LOW);
delay(500);
}