Πίνακας περιεχομένων:
Βίντεο: Χρηματοκιβώτιο: 3 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:38
Αυτό πρέπει να είναι το τελικό σας αποτέλεσμα αφού το συνδυάσετε και ανεβάσετε τον κώδικα.
Βήμα 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:
όταν γίνει όλα θα πρέπει να μοιάζει με αυτό.
Συνιστάται:
Πώς να φτιάξετε 4G LTE Double BiQuade Antenna Εύκολα Βήματα: 3 Βήματα
Πώς να κάνετε εύκολα 4G LTE διπλή κεραία BiQuade Antenna: Τις περισσότερες φορές αντιμετώπισα, δεν έχω καλή ισχύ σήματος στις καθημερινές μου εργασίες. Ετσι. Searchάχνω και δοκιμάζω διάφορους τύπους κεραίας αλλά δεν δουλεύω. Μετά από σπατάλη χρόνου βρήκα μια κεραία που ελπίζω να φτιάξω και να δοκιμάσω, γιατί δεν είναι η βασική αρχή
Σχεδιασμός παιχνιδιών στο Flick σε 5 βήματα: 5 βήματα
Σχεδιασμός παιχνιδιών στο Flick σε 5 βήματα: Το Flick είναι ένας πραγματικά απλός τρόπος δημιουργίας ενός παιχνιδιού, ειδικά κάτι σαν παζλ, οπτικό μυθιστόρημα ή παιχνίδι περιπέτειας
B-Safe, το φορητό χρηματοκιβώτιο: 8 βήματα (με εικόνες)
B-Safe, το Portable Safe: *** 4 Σεπτεμβρίου 2019: Ανέβασα ένα νέο τρισδιάστατο αρχείο του ίδιου του κουτιού. Φάνηκε ότι η κλειδαριά μου ήταν 10 mm πολύ υψηλή για καλό κλείσιμο *** Το πρόβλημα Φανταστείτε αυτό: Ξυπνάτε ένα πρωί και ο καιρός είναι πραγματικά καλός. Θέλετε να πάτε στην παραλία. Επειδή δεν
Ένα φωτεινό χρηματοκιβώτιο: 6 βήματα
A Bright Safe: Αυτό το έργο προτείνει έναν τρόπο να εξασφαλίσετε το πράγμα σας. Το τελικό αποτέλεσμα του έργου είναι ένας διακόπτης με εντολή του arduino μετά από δύο στάδια ασφάλειας. Ο διακόπτης μπορεί να ανοίξει μια πύλη, να αντικαταστήσει ένα τηλεχειριστήριο ή απλά να δώσει εντολή στον κινητήρα. Το πρότζεκτ του έργου μου
Σπάστε και επαναφέρετε ένα ηλεκτρονικό χρηματοκιβώτιο: 3 βήματα
Σπάστε και επαναφέρετε ένα ηλεκτρονικό χρηματοκιβώτιο: σύντομη ιστορία, αν αφαιρούσα το περιεχόμενο του χρηματοκιβωτίου για έναν φίλο, θα μπορούσα να κρατήσω το χρηματοκιβώτιο … γιατί να μην το πυροβολήσω