#define trigger 18
#define echo 19
#define pinoPIR 23
#define infrared 26
#define buzzer 22
#define roxo 4
#define relay 27
#define azul 21
bool testeInfrared;
bool testePIR;
String s = "zeus";
String v;
float distancia;
void setup()
{
Serial.begin(115200);
pinMode(infrared, INPUT);
pinMode(relay,OUTPUT);
pinMode(pinoPIR, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(azul, OUTPUT);
pinMode(roxo, OUTPUT);
pinMode(trigger, OUTPUT); // trigger
pinMode(echo, INPUT); //echo
apresentacao();
}
void apresentacao (){
Serial.println("Seja bem-vindo, Sandiego ");
Serial.println("Sistema de segurança iniciado... ");
Serial.println("ative os sensores ");
verificacao1();
}
void verificacao1(){
while(true){
testeInfrared = digitalRead(infrared);
testePIR = digitalRead(pinoPIR);
digitalWrite(roxo,testePIR);
if (testeInfrared == 1){
nivel1();
}}}
void nivel1(){
while(testeInfrared = 1){
Serial.println("Nível 1 comprometido");
delay(500);
testeInfrared = digitalRead(infrared);
testePIR = digitalRead(pinoPIR);
digitalWrite(roxo,testePIR);
distancia = Ultrasonic(trigger,echo);
if(distancia < 20 && testeInfrared == 1){
nivel2();}}
Serial.println("Sensor infravermelho desativado");
verificacao1();
}
void nivel2()
{ while(distancia < 20 && testeInfrared == 1){
Serial.println("Níveis 1 e 2 comprometidos" );
delay(500);
testeInfrared = digitalRead(infrared);
testePIR = digitalRead(pinoPIR);
digitalWrite(roxo,testePIR);
distancia = Ultrasonic(trigger,echo);
if(distancia < 20 && testeInfrared == 1 && testePIR == 1){
nivel3();
}}
if (testeInfrared==1){
Serial.println("sensor Ultrasonic desativado");
Serial.println("voltando ao nivel 1");
nivel1();
}
Serial.println("Nenhum sensor ativado");
verificacao1();
}
void nivel3(){
while(distancia < 20 && testeInfrared == 1 && testePIR == 1){
Serial.println("Niveis 1,2 e 3 comprometidos");
delay(500);
testeInfrared = digitalRead(infrared);
testePIR = digitalRead(pinoPIR);
digitalWrite(roxo,testePIR);
distancia = Ultrasonic(trigger,echo);
Serial.println("Por favor, digite a senha:");
delay(5000);
if(Serial.available()){
v=Serial.readStringUntil('\n');
while(true){
if(v==s){
Serial.println("Senha está correta");
digitalWrite(relay,1);
delay(5000);
digitalWrite(relay,0);
break;
}
if(v!=s){
Serial.println("Senha incorreta");
Serial.println("Chamando a Policia!");
digitalWrite(buzzer,1);
for (int x=0; x<5;x++){
digitalWrite(relay,1);
delay(500);
digitalWrite(relay,0);
digitalWrite(azul,1);
delay(500);
digitalWrite(azul,0);
}
digitalWrite(buzzer,0);
break;
}}}}
if (distancia < 20 && testeInfrared == 1){
Serial.println("sensor PIR desativado");
Serial.println("voltando ao nivel 2");
nivel2();
}
if (testeInfrared==1){
Serial.println("sensor Ultrasonic desativado");
Serial.println("voltando ao nivel 1");
nivel1();
}
Serial.println("Nenhum sensor ativado");
verificacao1();
}
float Ultrasonic(int pintrigger, int pinecho){
int distancia = 0;
while(distancia == 0) {
digitalWrite(pintrigger, 0);
delayMicroseconds(5);
digitalWrite(pintrigger, 1);
delayMicroseconds(5);
float tempo = pulseIn(pinecho,1);
distancia = (tempo/2/29.15);
}
return distancia;
}
void loop(){}