Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
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í.