Tabla de contenido:
Video: Caja de seguridad: 3 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:44
Este es el resultado final que debería tener después de armarlo y cargar el código.
Paso 1: Cosas que necesitará
Cables de puente, resistencia de 220 OHM, pantalla LCD de 16x2, botones pulsadores, servomotor, placa de pruebas, Arduino Uno.
Paso 2: Código
James chinchay
#incluir
#incluir #incluir
int dirección = 0; SaveTimer largo sin firmar estático; Static unsigned long SaveDelay = (30 * 1000);
char CODE [10] = "1234E"; char Str [10]; char CodeLength = 4; int Pos = 0; bool Desbloqueado; DisplayTimer largo sin firmar estático; DisplayDelay largo sin firmar estático = 200;
LiquidCrystal lcd (12, 11, 9, 8, 7, 6);
int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5;
int enterbutton = 10; int clearlockbutton = 13;
Servo myServo; // configurando el programa de construcción void setup () {
myServo.attach (A1);
int EEPROMCodeOK = verdadero; para (Pos = 0; Pos <= (CodeLength); Pos ++) {Str [Pos] = EEPROM.read (Pos); if (! (strrchr ("1123456789", Str [Pos]))) {// no es un código válido EEPROMCodeOK = false; }} Pos ++; Str [Pos] = EEPROM.read (Pos); if (Str [CodeLength + 1]! = 'E') EEPROMCodeOK = falso; if (EEPROMCodeOK) {Str [CodeLength + 2] = '\ 0'; strncpy (CODE, Str, CodeLength + 1); } ClearCode (); // configurando entradas pinMode (buttonPin1, INPUT_PULLUP); pinMode (buttonPin2, INPUT_PULLUP); pinMode (buttonPin3, INPUT_PULLUP); pinMode (buttonPin4, INPUT_PULLUP);
pinMode (botón de entrada, INPUT_PULLUP); pinMode (botón clearlock, INPUT_PULLUP);
lcd. comienzo (16, 2); lcd.setCursor (0, 0); // configurando lcd.print mensaje ("Hola Sr. Birch"); retraso (2000); lcd.clear (); lcd.setCursor (0, 0); // configuración de solicitud de contraseña lcd.print ("Contraseña:");
DisplayTimer = milis () + 200; }
bucle vacío () {
Cerrar con llave();
Pos = restringir (Pos, 0, CodeLength); // leer botones int buttonState1 = digitalRead (buttonPin1); int buttonState2 = digitalRead (buttonPin2); int buttonState3 = digitalRead (buttonPin3); int buttonState4 = digitalRead (buttonPin4);
int clButtonState = digitalRead (clearlockbutton); int enterButtonState = digitalRead (enterbutton);
lcd.setCursor (9, 0); // requisitos para activar if (buttonState1 == LOW) {Str [Pos] = '1'; Pos ++; Str [Pos] = '\ 0'; retraso (250); while (digitalRead (buttonPin1) == BAJO);
}
else if (buttonState2 == LOW) {Str [Pos] = '2'; Pos ++; Str [Pos] = '\ 0'; retraso (250); while (digitalRead (buttonPin2) == BAJO);
}
else if (buttonState3 == LOW) {Str [Pos] = '3'; Pos ++; Str [Pos] = '\ 0'; retraso (250); while (digitalRead (buttonPin3) == BAJO); }
else if (buttonState4 == LOW) {Str [Pos] = '4'; Pos ++; Str [Pos] = '\ 0'; retraso (250); while (digitalRead (buttonPin4) == BAJO);
} else if (enterButtonState == LOW) {Str [Pos] = 'E'; Pos ++; Str [Pos] = '\ 0'; retraso (250); while (digitalRead (buttonPin1) == BAJO); if (strcmp (Str, CODE) == 0) {Desbloqueado = verdadero; lcd.setCursor (0, 0); lcd.print ("Acceso concedido"); retraso (2000); lcd.clear (); lcd.print ("Desbloqueado"); } else if (SaveTimer> millis () && (Pos + 1) == CodeLength) {
strcpy (CÓDIGO, Str); para (Pos = 0; Pos <= (CodeLength + 1); Pos ++) {EEPROM.write (Pos, Str [Pos]); } lcd.setCursor (0, 0); lcd.print ("Código de ahorro:"); lcd.setCursor (0, 1); lcd.print (Str);
Desbloqueado = verdadero; }
demás {
lcd.clear (); lcd.print ("Acceso denegado"); retraso (2000); lcd.clear (); lcd.print ("Contraseña:");
} // código de desbloqueo while (desbloqueado) {Unlock (); if (digitalRead (clearlockbutton) == LOW) {delay (200); lcd.clear (); lcd.print ("Bloqueado"); retraso (2000); lcd.clear (); Desbloqueado = falso; SaveTimer = milis () + 30000; }}
ClearCode ();
}
else if (clButtonState == LOW) {retraso (500);
while (clearlockbutton == LOW); if ((millis () - SaveTimer)> 4500) {
}
ClearCode ();
}
if ((long) (millis () - DisplayTimer)> = 0) {DisplayTimer + = DisplayDelay; lcd.setCursor (9, 0); lcd.print (Str); lcd.print ("");
} }
void ClearCode () {
Pos = 0; Str [Pos] = '\ 0'; lcd.setCursor (0, 0); lcd.print ("Contraseña:"); lcd.setCursor (0, 1); lcd.print ("");
}
Desbloqueo vacío () {
myServo.write (150);
} // botón de bloqueo del programa void Lock () {
myServo.write (50);
}
Paso 3:
una vez hecho todo, debería verse así.
Recomendado:
Caja de seguridad insegura: 7 pasos
Caja de seguridad insegura: este instructivo fue creado en cumplimiento del requisito del proyecto de Makecourse en la Universidad del Sur de Florida (www.makecourse.com) ¡Hola! ¿Tiene objetos de valor no tan valiosos que desea guardar pero no tan seguros?
Cómo hacer que la caja de seguridad siga el juego Among Us - Tarea de cableado eléctrico: 7 pasos
Cómo hacer una caja de seguridad siguiendo el juego Among Us - Tarea de cableado eléctrico: Hoy, te mostraré cómo hacer una caja de seguridad siguiendo el juego Among Us - Tarea de cableado eléctrico
Caja de seguridad inteligente: 7 pasos
Caja de seguridad inteligente: en este instructable, le mostraré cómo hacer una caja de seguridad inteligente.La caja de seguridad funciona con un Arduino (UNO) y usa RFID y un servomotor para controlar el acceso mientras realiza un seguimiento de los datos entrantes de diferentes sensores. mantenerse en un
Caja de seguridad con huellas dactilares: 4 pasos
Caja de seguridad de huellas dactilares: ¿Eres una persona olvidadiza? ¿Te olvidas a menudo de traer tus llaves? Si la respuesta a la pregunta es sí. ¡Entonces deberías hacer tu propia caja de seguridad de huellas dactilares! La huella dactilar de ti mismo es lo único en el mundo. Así no tendrás que
Botón de seguridad inalámbrico para la seguridad del PLC: 6 pasos (con imágenes)
Botón de seguridad inalámbrico para seguridad de PLC: este proyecto es mi prueba de concepto para usar IoT y (eventualmente) robótica para crear una capa adicional de seguridad para instalaciones de fabricación peligrosas. Este botón se puede utilizar para iniciar o detener múltiples procesos, incluido el control de la señal