Tabla de contenido:

Caja de seguridad: 3 pasos
Caja de seguridad: 3 pasos

Video: Caja de seguridad: 3 pasos

Video: Caja de seguridad: 3 pasos
Video: Caja de seguridad para llaves - Bricomanía 2024, Noviembre
Anonim
Caja fuerte
Caja fuerte
Caja fuerte
Caja fuerte
Caja fuerte
Caja fuerte

Este es el resultado final que debería tener después de armarlo y cargar el código.

Paso 1: Cosas que necesitará

Cosas que necesitará
Cosas que necesitará
Cosas que necesitará
Cosas que necesitará
Cosas que necesitará
Cosas que necesitará
Cosas que necesitará
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: