Inhaltsverzeichnis:
Video: Safe - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
So sollte Ihr endgültiges Ergebnis aussehen, nachdem Sie es zusammengestellt und den Code hochgeladen haben.
Schritt 1: Dinge, die Sie brauchen
Überbrückungsdrähte, 220 OHM Widerstand, 16x2 LCD-Bildschirm, Drucktasten, Servomotor, Steckbrett, Arduino Uno.
Schritt 2: Code
James Chinchay
#enthalten
#einschließen #einschließen
int-Adresse = 0; statischer unsigned langer SaveTimer; statisch unsigned long SaveDelay = (30 * 1000);
Zeichen CODE[10] = "1234E"; charStr[10]; char CodeLänge = 4; int Pos = 0; bool Entsperrt; statisch unsigned long DisplayTimer; statisch unsigned long DisplayDelay = 200;
Flüssigkristall-LCD (12, 11, 9, 8, 7, 6);
int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5;
int Eingabetaste = 10; int clearlockbutton = 13;
Servo myServo; // Einrichten des Konstruktprogramms void setup () {
myServo.attach(A1);
int EEPROMCodeOK = wahr; for (Pos = 0; Pos <= (CodeLength); Pos++) { Str[Pos] = EEPROM.read(Pos); if (!(strrchr("1123456789", Str[Pos]))) { // kein gültiger Code EEPROMCodeOK = false; } } Pos++; Str[Pos] = EEPROM.read(Pos); if (Str[CodeLength + 1] != 'E') EEPROMCodeOK = false; if (EEPROMCodeOK) { Str[CodeLength + 2] = '\0'; strncpy(CODE, Str, CodeLänge + 1); } ClearCode(); // Einrichten der Eingänge PinMode (buttonPin1, INPUT_PULLUP); pinMode (buttonPin2, INPUT_PULLUP); pinMode (buttonPin3, INPUT_PULLUP); pinMode (buttonPin4, INPUT_PULLUP);
pinMode (Eingabetaste, INPUT_PULLUP); pinMode (clearlockbutton, INPUT_PULLUP);
lcd.begin(16, 2); lcd.setCursor(0, 0); // Einrichten von Nachrichten lcd.print ("Hallo Herr Birch"); Verzögerung (2000); lcd.clear(); lcd.setCursor(0, 0); // Eingabeaufforderung für Passwort einrichten lcd.print("Password:");
DisplayTimer = Millis() + 200; }
Leere Schleife () {
Sperren();
Pos = einschränken(Pos, 0, CodeLänge); // Schaltflächen lesen Int buttonState1 = digitalRead (buttonPin1); int buttonState2 = digitalRead (buttonPin2); int buttonState3 = digitalRead (buttonPin3); int buttonState4 = digitalRead (buttonPin4);
int clButtonState = digitalRead (clearlockbutton); int enterButtonState = digitalRead (Eingabetaste);
lcd.setCursor(9, 0); //Anforderungen zum Aktivieren wenn (buttonState1 == LOW) { Str[Pos] = '1'; Pos++; Str[Pos] = '\0'; Verzögerung (250); während (digitalRead (buttonPin1) == LOW);
}
sonst if (buttonState2 == LOW) { Str[Pos] = '2'; Pos++; Str[Pos] = '\0'; Verzögerung (250); während (digitalRead (buttonPin2) == LOW);
}
sonst if (buttonState3 == LOW) { Str[Pos] = '3'; Pos++; Str[Pos] = '\0'; Verzögerung (250); während (digitalRead (buttonPin3) == LOW); }
sonst if (buttonState4 == LOW) { Str[Pos] = '4'; Pos++; Str[Pos] = '\0'; Verzögerung (250); während (digitalRead (buttonPin4) == LOW);
aufrechtzuerhalten. Sonst if (enterButtonState == LOW) { Str[Pos] = 'E'; Pos++; Str[Pos] = '\0'; Verzögerung (250); während (digitalRead (buttonPin1) == LOW); if (strcmp (Str, CODE) == 0) { Entsperrt = wahr; lcd.setCursor(0, 0); lcd.print("Zugriff gewährt"); Verzögerung (2000); lcd.clear(); lcd.print("entsperrt"); } else if (SaveTimer > millis() && (Pos + 1) == CodeLength) {
strcpy(CODE, Str); for (Pos = 0; Pos <= (CodeLength + 1); Pos++) { EEPROM.write(Pos, Str[Pos]); } lcd.setCursor (0, 0); lcd.print("Speichercode:"); lcd.setCursor(0, 1); lcd.print(Str);
Entsperrt = wahr; }
anders {
lcd.clear(); lcd.print("Zugriff verweigert."); Verzögerung (2000); lcd.clear(); lcd.print("Passwort:");
} // Code entsperren während (entsperrt) { Entsperren (); if (digitalRead (clearlockbutton) == LOW) { Verzögerung (200); lcd.clear(); lcd.print("Gesperrt"); Verzögerung (2000); lcd.clear(); Entsperrt = falsch; SaveTimer = millis() + 30000; } }
ClearCode();
}
sonst if (clButtonState == LOW) { Verzögerung (500);
während (clearlockbutton == LOW); if ((millis() - SaveTimer) > 4500) {
}
ClearCode();
}
if ((long)(millis() - DisplayTimer) >= 0) { DisplayTimer += DisplayDelay; lcd.setCursor(9, 0); lcd.print(Str); lcd.print(" ");
} }
Leere ClearCode() {
Pos = 0; Str[Pos] = '\0'; lcd.setCursor(0, 0); lcd.print("Passwort:"); lcd.setCursor(0, 1); lcd.print(" ");
}
void Unlock() {
myServo.write(150);
} // Schaltfläche zum Sperren des Programms void Lock () {
myServo.write(50);
}
Schritt 3:
Wenn alles fertig ist, sollte es so aussehen.