Escolar Documentos
Profissional Documentos
Cultura Documentos
4. Modo de funcionamento
//==============================================================================//
//BIBIBLIOTECAS
//==============================================================================//
#include <SPI.h> //BIBLIOTECA BARRAMENTO DE COMUNICAÇÕES INTERNAS DO
ARDUINO
#include <Ethernet.h> //BIBLIOTECA MÓDULO ETHERNET SHIELD
#include <Mudbus.h> //BIBLIOTECA PROTOCOLO DE COMUNICAÇÃO MODBUS
//==============================================================================//
//VARIAVEIS GLOBAIS
//==============================================================================//
boolean modo_alarme = false; //VARIAVEL MODO FUNCIONAMENTO CENTRAL ALARME -
ATIVO = 1 / DESATIVADO = 0
bool statusbutton = LOW; //VARIAVEL MODO FUNCIONAMENTO CENTRAL ALARME -
ATIVO = 1 / DESATIVADO = 0
bool on_off_button = LOW; //VARIAVEL ARMAZENAMENTO STATUS BOTAO
int statuspanico = 0; //VARIAVEL DE STATUS FUNÇÃO PANICO
#define sensorIR 2 //DEFINE VARIAVEL PARA SENSOR DE INFRAVERMELHO
#define sensorPIR 3 //DEFINE VARIAVEL PARA SENSOR DE PIR
#define button 5 //DEFINE VARIAVEL PARA LED STATUS PANICO
#define ledAzul 6 //DEFINE VARIAVEL PARA LED 01
#define ledVerde 7 //DEFINE VARIAVEL PARA LED 02
#define buzzer 8 //DEFINE VARIAVEL PARA CAMPANHIA ALARME
#define ledPanico 9 //DEFINE VARIAVEL PARA SINALIZACAO PANICO
Mudbus Mb; //INSTANCIAMENTO PROTOCOLO MODBUS
//==============================================================================//
void setup() { //FUNÇAO DE CONFIGURAÇÕES
//==============================================================================//
uint8_t mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 }; //ATRIBUI ENDEREÇO DE MAC SHIELD
ETHERNET
uint8_t ip[] = { 192, 168, 0, 250 }; //ATRIBUI ENDEREÇO DE IP SHIELD ETHERNET
Ethernet.begin(mac, ip); //INICIA ENDEREÇOS DE MAC E IP
//==============================================================================//
//DEFINIÇÃO DE PINOS ENTRADA E SAÍDAS
//==============================================================================//
pinMode(sensorIR, INPUT_PULLUP); //DEFINE PINO 2 COMO ENTRADA DO SENSOR IR
pinMode(sensorPIR, INPUT_PULLUP); //DEFINE PINO 3 COMO ENTRADA DO SENSOR PIR
pinMode(button, INPUT_PULLUP); //DEFINE PINO 5 DA PLACA COMO ENTRADA E
HABILITA RESISTORES PULL_DOW
pinMode(ledAzul, OUTPUT); //DEFINE PINO 6 DA PLACA COMO SAIDA
pinMode(ledVerde, OUTPUT); //DEFINE PINO 7 DA PLACA COMO SAIDA
pinMode(buzzer, OUTPUT); //DEFINE PINO 8 DA PLACA COMO SAIDA
pinMode(ledPanico, OUTPUT); //DEFINE PINO 9 DA PLACA COMO SAIDA
delay(2000); //TIMER 2000 MILISEGUNDOS
Serial.begin(9600); //INICIA REDES SERIAIS
digitalWrite(ledAzul, LOW); //DESLIGA LED AZUL
digitalWrite(ledVerde, LOW); //DESLIGA LED VERDE
digitalWrite(buzzer, HIGH); //DESLIGA CAMPANHIA
digitalWrite(ledPanico, LOW); //DESLIGA LED PANICO
}
//==============================================================================//
void loop() { //LOOP DO PROGRAMA
//==============================================================================//
Mb.Run(); //INICIA COMUNICAÇÃO MODBUS
Mb.C[21] = digitalRead(sensorIR); //ENDEREÇO COIL 21 MODBUS RECEBE STATUS DO
SENSOR IR
Mb.C[22] = digitalRead(sensorPIR); //ENDEREÇO COIL 22 MODBUS RECEBE STATUS DO
SENSOR PIR
Mb.C[23] = digitalRead(ledPanico); //ENDEREÇO COIL 23 MODBUS RECEBE STATUS DA
FUNÇÃO PANICO
buttonpanico(); //FUNÇÃO LEITURA BOTÃO PANICO
if (Mb.C[23] == HIGH) { //COMPARA SE BOTÃO FOI PRESSIONADO
panico(); //FUNÇÃO PANICO ATIVADA
} else {
desativado(); //FUNÇÃO DESATIVADO
}
modo_alarme = Mb.C[20]; //VARIAVEL MODO FUNCIONAMENTO RECEBE VALOR
VIA ETHERNET
if (modo_alarme == true) { //TESTE SE MODO FUNCIONAMENTO FOR = 1, ATIVA
ROTINA DE ALARME ATIVADO
ativado(); //CHAMA ROTINA ALARME ATIVADO
} else {
desativado(); //SE BOTÃO SUPERVISORIO = 0, ALARME DESATIVADO
}
}
//==============================================================================//
void ativado() { //ROTINA DE CENTRAL ALARME ATIVADA
//==============================================================================//
if (Mb.C[21] == 1 || Mb.C[22] == 1 ) { //COMPARA SE SENSORES IR OU PIR ESTÃO
DETECTANDO PRESENÇA
digitalWrite(ledAzul, HIGH); //SE HÁ PRESENÇA LIGA LED VERDE
digitalWrite(ledVerde, HIGH); //SE HÁ PRESENÇA LIGA LED VERDE
digitalWrite(buzzer, LOW); //SE HÁ PRESENÇA LIGA BUZZER
delay(500); //TIMER DE ALARME DESLIGADO
}
else {
desativado(); //FUNÇÃO DESATIVADO EM CASO NENHUM SENSOR
ATIVO
}
}
//==============================================================================//
void desativado() { //ROTINA PARA CONDIÇÃO DESATIVADA
//==============================================================================//
digitalWrite(ledAzul, LOW); //SE NÃO HÁ PRESENÇA LIGA LED BRANCO
digitalWrite(ledVerde, LOW); //SE NÃO HÁ PRESENÇA LIGA LED VERDE
digitalWrite(buzzer, HIGH); //DESLIGA CAMPANHIA
}
//==============================================================================//
void buttonpanico() { //ROTINA PARA CONDIÇÃO DE PANICO
//==============================================================================//
statusbutton = digitalRead(button); //VARIAVEL STATUSBUTTON RECEBE
VALOR PINO 4
if ((statusbutton == HIGH) && (on_off_button == LOW)) { //TESTE PARA LATCH UNLATCH DA
FUNÇÃO PANICO
statuspanico = 1 - statuspanico; //SE FUNÇÃO ATIVA E BOTÃO
PRESSIONADO, DESATIVA FUNÇÃO
delay(250); //TIMER DE 250 MILISEGUNDOS PARA
VARIAÇÃO DE PULL_UP
}
on_off_button = statusbutton; //VARIAVEL PARA RECEBER STATUS DA
FUNÇÃO
if (statuspanico == 1) { //COMPARA SE STATUS FUNÇÃO ESTA
ATIVADA
digitalWrite(ledPanico, HIGH); //ATIVA FUNCAO PANICO
} else {
digitalWrite(ledPanico, LOW); //DESATIVA FUNCAO PANICO
}
}
//==============================================================================//
void panico() { //FUNÇÃO PANICO
//==============================================================================//
digitalWrite(ledAzul, HIGH); //LIGA LED BRANCO
digitalWrite(buzzer, LOW); //LIGA CAMPANHIA
delay(300); //TIMER DE LED BRANCO LIGADO
digitalWrite(ledVerde, HIGH); //LIGA LED VERDE
digitalWrite(buzzer, HIGH); //DESLIGA CAMPANHIA
delay(300); //TIMER LED VERDE LIGADO
digitalWrite(ledAzul, LOW); //DESLIGA LED BRANCO
digitalWrite(buzzer, LOW); //LIGA CAMPANHIA
delay(300); //TIMER LED BRANCO DESLIGADO
digitalWrite(ledVerde, LOW); //DESLIGA LED VERDE
digitalWrite(buzzer, HIGH); //DESLIGA CAMPANHIA
}
Anexo II – Esquema Ilustrativo das Ligações Elétricas