Πίνακας περιεχομένων:

Χρηματοκιβώτιο: 3 βήματα
Χρηματοκιβώτιο: 3 βήματα

Βίντεο: Χρηματοκιβώτιο: 3 βήματα

Βίντεο: Χρηματοκιβώτιο: 3 βήματα
Βίντεο: Burg Wachter Αλλαγή κωδικού χρήστη 2024, Νοέμβριος
Anonim
Ασφαλές κουτί
Ασφαλές κουτί
Ασφαλές κουτί
Ασφαλές κουτί
Ασφαλές κουτί
Ασφαλές κουτί

Αυτό πρέπει να είναι το τελικό σας αποτέλεσμα αφού το συνδυάσετε και ανεβάσετε τον κώδικα.

Βήμα 1: Πράγματα που θα χρειαστείτε

Πράγματα που θα χρειαστείτε
Πράγματα που θα χρειαστείτε
Πράγματα που θα χρειαστείτε
Πράγματα που θα χρειαστείτε
Πράγματα που θα χρειαστείτε
Πράγματα που θα χρειαστείτε
Πράγματα που θα χρειαστείτε
Πράγματα που θα χρειαστείτε

Jumper Wires, αντίσταση 220 OHM, οθόνη LCD 16x2, κουμπιά, Servo Motor, Breadboard, Arduino Uno.

Βήμα 2: Κωδικός

Τζέιμς Τσίντσαϊ

#περιλαμβάνω

#συμπεριλάβω #συμπεριλάβω

int διεύθυνση = 0; στατικό ανυπόγραφο μακρύ SaveTimer. στατικό ανυπόγραφο μακρύ SaveDelay = (30 * 1000);

char ΚΩΔΙΚΟΣ [10] = "1234E"; char Str [10]; char CodeLength = 4; int Pos = 0; bool Unlocked? στατικό ανυπόγραφο μακρύ DisplayTimer. στατική ανυπόγραφη μεγάλη DisplayDelay = 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; // ρύθμιση του προγράμματος κατασκευής void setup () {

myServo.attach (A1);

int EEPROMCodeOK = true; για (Pos = 0; Pos <= (CodeLength); Pos ++) {Str [Pos] = EEPROM.read (Pos); εάν (! (strrchr ("1123456789", Str [Pos]))) {// δεν είναι έγκυρος κωδικός EEPROMCodeOK = false; }} Pos ++; Str [Pos] = EEPROM.read (Pos); if (Str [CodeLength + 1]! = 'E') EEPROMCodeOK = false; if (EEPROMCodeOK) {Str [CodeLength + 2] = '\ 0'; strncpy (ΚΩΔΙΚΟΣ, Str, CodeLength + 1); } ClearCode (); // ρύθμιση εισόδων pinMode (buttonPin1, INPUT_PULLUP); pinMode (buttonPin2, INPUT_PULLUP); pinMode (buttonPin3, INPUT_PULLUP); pinMode (buttonPin4, INPUT_PULLUP);

pinMode (enterbutton, INPUT_PULLUP); pinMode (διακόπτη κλειδώματος, INPUT_PULLUP);

lcd.αρχή (16, 2); lcd.setCursor (0, 0); // ρύθμιση μηνυμάτων lcd.print ("Hello Mr Birch"). καθυστέρηση (2000). lcd.clear (); lcd.setCursor (0, 0); // ρύθμιση προτροπής για κωδικό πρόσβασης lcd.print ("Κωδικός πρόσβασης:");

DisplayTimer = millis () + 200; }

void loop () {

Κλειδαριά();

Pos = περιορισμός (Pos, 0, CodeLength); // ανάγνωση κουμπιών 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); // απαιτήσεις για ενεργοποίηση εάν (buttonState1 == LOW) {Str [Pos] = '1'; Pos ++; Str [Pos] = '\ 0'; καθυστέρηση (250)? ενώ (digitalRead (buttonPin1) == LOW);

}

else if (buttonState2 == LOW) {Str [Pos] = '2'; Pos ++; Str [Pos] = '\ 0'; καθυστέρηση (250)? ενώ (digitalRead (buttonPin2) == LOW);

}

else if (buttonState3 == LOW) {Str [Pos] = '3'; Pos ++; Str [Pos] = '\ 0'; καθυστέρηση (250)? ενώ (digitalRead (buttonPin3) == LOW); }

else if (buttonState4 == LOW) {Str [Pos] = '4'; Pos ++; Str [Pos] = '\ 0'; καθυστέρηση (250)? ενώ (digitalRead (buttonPin4) == LOW);

} else if (enterButtonState == LOW) {Str [Pos] = 'E'; Pos ++; Str [Pos] = '\ 0'; καθυστέρηση (250)? ενώ (digitalRead (buttonPin1) == LOW); if (strcmp (Str, CODE) == 0) {Unlocked = true; lcd.setCursor (0, 0); lcd.print ("Παρέχεται πρόσβαση"); καθυστέρηση (2000). lcd.clear (); lcd.print ("Ξεκλείδωτο"); } else if (SaveTimer> millis () && (Pos + 1) == CodeLength) {

strcpy (ΚΩΔΙΚΟΣ, Str); για (Pos = 0; Pos <= (CodeLength+1); Pos ++) {EEPROM.write (Pos, Str [Pos]); } lcd.setCursor (0, 0); lcd.print ("Αποθήκευση κωδικού:"); lcd.setCursor (0, 1); lcd.print (Str);

Ξεκλείδωτο = true; }

αλλιώς {

lcd.clear (); lcd.print ("Αρνήθηκε η πρόσβαση."); καθυστέρηση (2000). lcd.clear (); lcd.print ("Κωδικός πρόσβασης:");

} // ξεκλείδωμα κώδικα ενώ (Ξεκλείδωτο) {Ξεκλείδωμα (); if (digitalRead (clearlockbutton) == LOW) {καθυστέρηση (200); lcd.clear (); lcd.print ("Κλειδωμένο"); καθυστέρηση (2000). lcd.clear (); Ξεκλείδωτο = false; SaveTimer = millis () + 30000; }}

ClearCode ();

}

else if (clButtonState == LOW) {καθυστέρηση (500);

while (clearlockbutton == LOW); εάν ((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 ("Κωδικός πρόσβασης:"); lcd.setCursor (0, 1); lcd.print ("");

}

void Ξεκλείδωμα () {

myServo.write (150);

} // κουμπί κλειδώματος προγράμματος void Lock () {

myServo.write (50);

}

Βήμα 3:

όταν γίνει όλα θα πρέπει να μοιάζει με αυτό.

Συνιστάται: