#include <ESP32Servo.h>
#define led_vermelho 32
#define led_azul 14
#define led_verde 27
#define pir 22
#define trigger 18
#define echo 19
#define bottom 13
float distancia;
String senha;
String senhaCadastrada = "";
char leituraSerial;
Servo servo;
int pinServo=2;
int angulo = 0;
const int buzzer = 23;
bool mensagem = false;
void setup() {
Serial.begin(115200);
pinMode(trigger, OUTPUT); // trigger
pinMode(echo, INPUT); //echo
pinMode(led_vermelho, OUTPUT);// led vermelho
pinMode(led_azul, OUTPUT);// led azul
pinMode (led_verde, OUTPUT);// led verde
pinMode (pir, INPUT);
pinMode (buzzer, OUTPUT);
pinMode (pinServo, OUTPUT);
servo.attach(pinServo);
}
void loop() {
delay(10);
distancia = Ultrasonic(trigger,echo);
delay(10);
if (distancia < 30){
digitalWrite(led_vermelho,1);
digitalWrite(led_verde,0);
digitalWrite(led_azul,0);
Serial.print("DISTANCIA: ");
Serial.println(distancia);
Serial.println("cm");
delay(1000);
digitalWrite(led_vermelho,0);
cofre();
}
else {
digitalWrite (led_azul,0);
digitalWrite (led_vermelho, 0);
digitalWrite(led_verde,0);
}
int leitura = digitalRead(pir);
if(leitura == 1 && distancia < 30){
digitalWrite(led_azul,1);
Serial.println("LED AZUL LIGADO");
delay(1000);
digitalWrite(led_azul,0);
}
cofre();
}
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 cofre(){
if(!mensagem){
Serial. println ("Cadastre uma senha de 4 caracteres: ");
mensagem = true;
}
delay(250);
if (Serial.available() > 0) {
char leituraSerial = Serial.read();
if (leituraSerial != '\n') {
senha += leituraSerial;
Serial.print(leituraSerial);
Serial.print('\n');
Serial.println(senha);
if (senha.length() == 4) {
if (senhaCadastrada.length() == 0) {
senhaCadastrada = senha;
Serial.println("Senha cadastrada!");
senha = "";
inicio();
} else if (senha==senhaCadastrada) {
Serial.println("Senha correta");
delay (100);
abrir();
senha = "";
delay(3000);
inicio();
} else {
Serial.println("Senha incorreta.");
Serial.println("Tente novamente.");
delay(3000);
senha = "";
inicio();
}
}
}
}
}
void inicio (){
delay(10);
servo.write (0);
delay (1000);
Serial.println("Cofre Fechado.");
Serial.println("Insira a senha:");
delay(100);
senha = "";
}
void abrir (){
servo.write (90);
delay (1000);
Serial. println ("Cofre aberto!");
digitalWrite(buzzer, 1);
digitalWrite(led_verde,1);
delay (1000);
digitalWrite(buzzer, 0);
digitalWrite(led_verde,0);
}