#define pinoIR 26
#define pinoPIR 27
#define trig 18
#define echo 19
#define led 32
#define buzzer 17
bool nivel1 = false;
bool nivel2 = false;
bool nivel3 = false;
void setup() {
Serial.begin(115200);
pinMode(pinoIR, INPUT);
pinMode(pinoPIR, INPUT);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(led, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void loop() {
// Nível 1: IR
if (digitalRead(pinoIR) == LOW) {
nivel1 = true;
Serial.println("Nível 1 violado!");
delay(1000);
}
// Nível 2: Ultrassônico
if (nivel1) {
float distancia = Ultrasonic(trig, echo);
if (distancia < 20) {
nivel2 = true;
Serial.println(distancia);
Serial.println("Nível 1 e 2 violados!");
delay(1000);
}
}
// Nível 3: PIR
if (nivel1 && nivel2 && digitalRead(pinoPIR) == HIGH) {
nivel3 = true;
Serial.println("Níveis 1, 2 e 3 comprometidos!");
delay(1000);
}
// Nível 4: Senha
if (nivel1 && nivel2 && nivel3) {
Serial.println("Digite a senha:");
while (Serial.available() == 0); // espera senha
String senha = Serial.readStringUntil('\n');
if (senha == "Temys") {
Serial.println("Senha correta → Cofre liberado!");
} else {
Serial.println("Senha incorreta → Alarme!");
digitalWrite(led, HIGH);
tone(buzzer, 1000);
delay(5000);
noTone(buzzer);
digitalWrite(led, LOW);
}
}
}
float Ultrasonic(int pintrigger, int pinecho) {
digitalWrite(pintrigger, LOW);
delayMicroseconds(5);
digitalWrite(pintrigger, HIGH);
delayMicroseconds(10);
digitalWrite(pintrigger, LOW);
long tempo = pulseIn(pinecho, HIGH);
return tempo * 0.034 / 2;
}