#define ledUS 26
#define ledPIR 25
#define trigger 19
#define echo 18
#define pir 4
#define ledcofre 2
#define buzzer 16
float distance;
int leiturapir;
String senha;
void setup() {
pinMode(ledPIR, OUTPUT);
pinMode(ledUS, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(ledcofre, OUTPUT);
pinMode(trigger, OUTPUT); // trigger
pinMode(echo, INPUT); //echo
pinMode(pir, INPUT);
Serial.begin(115200);
}
void loop() {
digitalWrite(ledUS, 0);
digitalWrite(ledPIR, 0);
distance = Ultrasonic(trigger, echo);
leiturapir = digitalRead(pir);
if (distance <= 50) {
Serial.print("Presença detectada há ");
Serial.print(distance);
Serial.print(" cm.\n\n");
digitalWrite (ledUS, 1);
delay (2500);
digitalWrite(ledUS, 0);
if (leiturapir == 1) {
while (leiturapir == 1 && distance <= 50) {
funcionapir ();
}
}
}
else if (distance > 50 && leiturapir == 1) {
Serial.print("Movimento INVÁLIDO.\nNenhuma presença detectada no campo do Ultrasonico.\n\n");
delay (2000);
}
else if (distance > 50) {
Serial.print("Nenhuma presença detectada.\n\n");
delay (2000);
}
}
void funcionapir () {
Serial.print ("Movimento detectado, acesso liberado.\n");
Serial.print("Digite a senha do cofre.\n\n");
digitalWrite(ledPIR, 1);
digitalWrite(ledUS, 1);
delay (5000);
digitalWrite(ledPIR, 0);
digitalWrite(ledUS, 0);
digitasenha ();
}
void digitasenha () {
while (true) {.
if (Serial.available()) {
senha = Serial.readStringUntil('\n');
break;
}
}
if (senha=="nima") {
Serial.print("SENHA CORRETA.\nAbra o cofre.\n\n");
acendeledetocabuzzer ();
}
else {
Serial.print("SENHA INCORRETA.\nTente novamente.\n\n");
delay (500);
return digitasenha ();
}
}
void acendeledetocabuzzer () {
for (int i=0; i<=10; i++) {
tone(buzzer, 392);
digitalWrite(ledcofre, 1);
delay (500);
noTone(buzzer);
digitalWrite(ledcofre, 0);
delay (500);
}
Serial.print("Fechando cofre. . .\n\n");
for (int j=0; j<=6; j++) {
tone(buzzer, 392);
digitalWrite(ledcofre, 1);
delay (250);
noTone(buzzer);
digitalWrite(ledcofre, 0);
delay (250);
}
Serial.print("Cofre fechado.\nProcurando Movimento...\n\n");
return loop ();
}
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;
}
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4