evidencias de que lo terminamos en Tinkercad
#include <Servo.h>
#include <Keypad.h>
#include <Password.h>
#define LED_AMARILLO 11
#define LED_VERDE 12
Servo servo;
// NUEVA contraseña: 2707
Password password = Password("2707");
byte currentPasswordLength = 0;
byte maxPasswordLength = 4;
bool puertaCerrada = false;
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'D', 'C', 'B', 'A'},
{'#', '9', '6', '3'},
{'0', '8', '5', '2'},
{'*', '7', '4', '1'}
};
byte rowPins[ROWS] = {2, 3, 4, 5};
byte colPins[COLS] = {6, 7, 8, 9};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() {
Serial.begin(9600);
pinMode(LED_AMARILLO, OUTPUT);
pinMode(LED_VERDE, OUTPUT);
servo.attach(10);
servo.write(50); // Puerta abierta
digitalWrite(LED_VERDE, HIGH);
digitalWrite(LED_AMARILLO, LOW);
}
void loop() {
char key = keypad.getKey();
if (key != NO_KEY) {
delay(60);
if (key == 'C') {
resetPassword();
} else if (isDigit(key)) {
processNumberKey(key);
} else if (key == '*') {
verificarPassword();
}
}
}
void processNumberKey(char key) {
if (currentPasswordLength < maxPasswordLength) {
password.append(key);
currentPasswordLength++;
}
}
void verificarPassword() {
if (currentPasswordLength == maxPasswordLength) {
if (password.evaluate()) {
if (!puertaCerrada) {
cerrarPuerta();
} else {
abrirPuerta();
}
} else {
parpadearLedError();
}
} else {
// Indica error si se presiona * antes de escribir 4 dígitos
parpadearLedError();
}
resetPassword();
}
void cerrarPuerta() {
servo.write(110);
digitalWrite(LED_AMARILLO, HIGH);
digitalWrite(LED_VERDE, LOW);
puertaCerrada = true;
delay(1000);
}
void abrirPuerta() {
servo.write(50);
digitalWrite(LED_AMARILLO, LOW);
digitalWrite(LED_VERDE, HIGH);
puertaCerrada = false;
delay(1000);
}
void parpadearLedError() {
for (int i = 0; i < 3; i++) {
digitalWrite(LED_AMARILLO, LOW);
digitalWrite(LED_VERDE, LOW);
delay(200);
digitalWrite(LED_AMARILLO, HIGH);
digitalWrite(LED_VERDE, HIGH);
delay(200);
}
digitalWrite(LED_AMARILLO, puertaCerrada);
digitalWrite(LED_VERDE, !puertaCerrada);
}
void resetPassword() {
password.reset();
currentPasswordLength = 0;
}
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#include <Teclado.h>
#include <Contraseña.h>
#define el timbre 11
Servo servo;
Cristal líquido_I2C lcd(0x27, 16, 2);
String newPasswordString; //contiene la nueva contraseña
char newPassword[6]; //cadena de caracteres de newPasswordString
byte a = 5;
valor bool = verdadero;
Contraseña contraseña = Contraseña("0123"); //Ingrese su contraseña
byte longitud máxima de contraseña = 6;
byte longitudDeContraseñaActual = 0;
const byte ROWS = 4; // Cuatro filas
const byte COLS = 4; // Cuatro columnas
claves de caracteres[FILAS][COlumnas] = {
{'D', 'C', 'B', 'A'},
{'#', '9', '6', '3'},
{'0', '8', '5', '2'},
{'*', '7', '4', '1'},
};
byte rowPins[FILAS] = {2, 3, 4, 5};
byte colPins[COLS] = {6, 7, 8, 9};
Teclado teclado = Teclado( makeKeymap(teclas), rowPins, colPins, FILAS, COLS );
configuración vacía() {
Serial.begin(9600);
pinMode(zumbador, SALIDA);
servo.attach(10);
servo.write(50);
lcd.init();
lcd.retroiluminación();
lcd.setCursor(3, 0);
lcd.print("BIENVENIDO A");
lcd.setCursor(0, 1);
lcd.print("SISTEMA DE BLOQUEO DE PUERTA");
retraso(3000);
lcd.clear();
}
bucle vacío() {
lcd.setCursor(1, 0);
lcd.print("INGRESE LA CONTRASEÑA");
char clave = teclado.getKey();
si (clave != NO_KEY) {
retraso(60);
si (tecla == 'C') {
restablecerContraseña();
} de lo contrario si (clave == 'D') {
si (valor == verdadero) {
puerta cerrada();
valor = falso;
} de lo contrario si (valor == falso) {
puerta abierta();
valor = verdadero;
}
} demás {
processNumberKey(clave);
}
}
}
void processNumberKey(char clave) {
lcd.setCursor(a, 1);
lcd.print("*");
a++;
si (a == 11) {
a = 5;
}
longitudDeContraseñaActual++;
contraseña.append(clave);
si (longitudContraseñaActual ==longitudContraseñaMáxima) {
puerta cerrada();
puerta abierta();
}
}
void puerta abierta() {
si (contraseña.evaluar()) {
digitalWrite(zumbador, ALTO);
retraso(300);
digitalWrite(zumbador, BAJO);
servo.write(50);
retraso(100);
lcd.setCursor(0, 0);
lcd.print("CONTRASEÑA CORRECTA");
lcd.setCursor(0, 1);
lcd.print("PUERTA ABIERTA");
retraso(2000);
lcd.clear();
a = 5;
} demás {
digitalWrite(zumbador, ALTO);
retraso(200);
digitalWrite(zumbador, BAJO);
retraso(200);
digitalWrite(zumbador, ALTO);
retraso(200);
digitalWrite(zumbador, BAJO);
retraso(200);
digitalWrite(zumbador, ALTO);
retraso(200);
digitalWrite(zumbador, BAJO);
retraso(200);
lcd.setCursor(0, 0);
lcd.print("¡CONTRASEÑA INCORRECTA!");
lcd.setCursor(0, 1);
lcd.print("POR FAVOR, INTÉNTALO DE NUEVO");
retraso(2000);
lcd.clear();
a = 5;
}
restablecerContraseña();
}
void restablecerContraseña() {
contraseña.reset();
longitudDeContraseñaActual = 0;
lcd.clear();
a = 5;
}
void puerta cerrada() {
si (contraseña.evaluar()) {
digitalWrite(zumbador, ALTO);
retraso(300);
digitalWrite(zumbador, BAJO);
servo.write(110);
retraso(100);
lcd.setCursor(0, 0);
lcd.print("CONTRASEÑA CORRECTA");
lcd.setCursor(2, 1);
lcd.print("PUERTA CERRADA");
retraso(2000);
lcd.clear();
a = 5;
} demás {
digitalWrite(zumbador, ALTO);
retraso(200);
digitalWrite(zumbador, BAJO);
retraso(200);
digitalWrite(zumbador, ALTO);
retraso(200);
digitalWrite(zumbador, BAJO);
retraso(200);
digitalWrite(zumbador, ALTO);
retraso(200);
digitalWrite(zumbador, BAJO);
retraso(200);
lcd.setCursor(0, 0);
lcd.print("¡CONTRASEÑA INCORRECTA!");
lcd.setCursor(0, 1);
lcd.print("POR FAVOR, INTÉNTALO DE NUEVO");
retraso(2000);
lcd.clear();
a = 5;
}
restablecerContraseña();
}- -Arduino UNO
- -Cables m-h,m-m
- -Pantalla LCD con módulo I2C
- -Servomotor
- -Zumbador de 5 V
- -Teclado 4x4
- diseño de la caja fuerte
PSINT
materiales utilizados- 1.arduino uno
- 2.buzzer
- 3.srevomotor
- 4.cables m-h m-m
- 5.tablero 4x4
- 6.pantalla led lcd pequeña
- 7.alambre
- 8.carton
- 9.pasador
- formato planteamiento
logo del proyecto- realizado por: dyland narvaez
pendon o presentacion del proyecto- realizado por: dyland narvaez
pendon fisico
cronograma












No hay comentarios:
Publicar un comentario