Mündəricat:
Video: Təhlükəsiz qutu: 3 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
Bir araya gətirdikdən və kodu yüklədikdən sonra son nəticəniz bu olmalıdır.
Addım 1: Ehtiyac duyacağınız şeylər
Jumper Wires, 220 OHM rezistor, 16x2 LCD Ekran, Düymələr, Servo Motor, Breadboard, Arduino Uno.
Addım 2: Kod
James Chinchay
#daxil edin
#daxil edin #daxil edin
int ünvanı = 0; statik imzasız uzun SaveTimer; statik işarəsiz uzun SaveDelay = (30 * 1000);
simvol KODU [10] = "1234E"; char Str [10]; char CodeLength = 4; int Pos = 0; bool Kilidi açıldı; statik işarəsiz uzun DisplayTimer; statik işarəsiz uzun 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; // qurma proqramının qurulması void setup () {
myServo.attach (A1);
int EEPROMCodeOK = doğru; for (Pos = 0; Pos <= (CodeLength); Pos ++) {Str [Pos] = EEPROM.read (Pos); if (! (strrchr ("1123456789", Str [Pos]))) {// etibarlı bir kod deyil EEPROMCodeOK = false; }} Pos ++; Str [Pos] = EEPROM.read (Pos); if (Str [CodeLength + 1]! = 'E') EEPROMCodeOK = yanlış; if (EEPROMCodeOK) {Str [CodeLength + 2] = '\ 0'; strncpy (KOD, Str, Kod Uzunluğu + 1); } ClearCode (); // pinMode girişlərinin qurulması (buttonPin1, INPUT_PULLUP); pinMode (buttonPin2, INPUT_PULLUP); pinMode (buttonPin3, INPUT_PULLUP); pinMode (buttonPin4, INPUT_PULLUP);
pinMode (enterbutton, INPUT_PULLUP); pinMode (təmizləmə düyməsi, INPUT_PULLUP);
lcd.begin (16, 2); lcd.setCursor (0, 0); // mesajlaşan lcd.print qurmaq ("Hello Mr Birch"); gecikmə (2000); lcd.clear (); lcd.setCursor (0, 0); // parol lcd.print ("Şifrə:") üçün istək qurmaq;
DisplayTimer = millis () + 200; }
boşluq döngəsi () {
Bağlamaq();
Pos = məhdudlaşdır (Pos, 0, CodeLength); // ox düymələri 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); // aktivləşdirmək üçün tələblər, əgər (buttonState1 == LOW) {Str [Pos] = '1'; Pos ++; Str [Pos] = '\ 0'; gecikmə (250); while (digitalRead (buttonPin1) == LOW);
}
else if (buttonState2 == LOW) {Str [Pos] = '2'; Pos ++; Str [Pos] = '\ 0'; gecikmə (250); while (digitalRead (buttonPin2) == LOW);
}
else if (buttonState3 == LOW) {Str [Pos] = '3'; Pos ++; Str [Pos] = '\ 0'; gecikmə (250); while (digitalRead (buttonPin3) == LOW); }
else if (buttonState4 == LOW) {Str [Pos] = '4'; Pos ++; Str [Pos] = '\ 0'; gecikmə (250); while (digitalRead (buttonPin4) == LOW);
} else if (enterButtonState == LOW) {Str [Pos] = 'E'; Pos ++; Str [Pos] = '\ 0'; gecikmə (250); while (digitalRead (buttonPin1) == LOW); if (strcmp (Str, CODE) == 0) {Kilidi açılmış = doğru; lcd.setCursor (0, 0); lcd.print ("Giriş Verildi"); gecikmə (2000); lcd.clear (); lcd.print ("Kilidi açıldı"); } başqa halda (SaveTimer> millis () && (Pos + 1) == CodeLength) {
strcpy (KOD, Str); for (Pos = 0; Pos <= (CodeLength+1); Pos ++) {EEPROM.write (Pos, Str [Pos]); } lcd.setCursor (0, 0); lcd.print ("Saxlama Kodu:"); lcd.setCursor (0, 1); lcd.print (Str);
Kilidi açıldı = doğru; }
başqa {
lcd.clear (); lcd.print ("Giriş rədd edildi."); gecikmə (2000); lcd.clear (); lcd.print ("Şifrə:");
} // kilidini açarkən kodu (Kilidi açılmış) {Kilidini aç (); if (digitalRead (clearlockbutton) == LOW) {gecikmə (200); lcd.clear (); lcd.print ("Bağlandı"); gecikmə (2000); lcd.clear (); Kilidi açılmış = yalan; SaveTimer = millis () + 30000; }}
ClearCode ();
}
else if (clButtonState == LOW) {gecikmə (500);
while (clearlockbutton == LOW); if ((millis () - SaveTimer)> 4500) {
}
ClearCode ();
}
if ((uzun) (millis () - DisplayTimer)> = 0) {DisplayTimer += DisplayDelay; lcd.setCursor (9, 0); lcd.print (Str); lcd.print ("");
} }
boşluq ClearCode () {
Pos = 0; Str [Pos] = '\ 0'; lcd.setCursor (0, 0); lcd.print ("Şifrə:"); lcd.setCursor (0, 1); lcd.print ("");
}
boşluq kilidini aç () {
myServo.write (150);
} // proqram kilidləmə düyməsi void Lock () {
myServo.write (50);
}
Addım 3:
hər şeyi etdikdə belə görünməlidir.
Tövsiyə:
Təhlükəsiz Milad ağacı: 6 addım
Təhlükəsiz Milad Ağacı: Bu, Arduino Mega ilə Elegoo'dan Tam Başlanğıc Kitidir. Bir neçə gün əvvəl Elegoo mənə bir dəst göndərdi və onunla birlikdə bir Milad layihəsi qurmağım üçün meydan oxudu. Bu dəst bir neçə komponentdən ibarətdir. Arduino Mega, servolar, ultrasəs sensorlar, uzaqdan
Təhlükəsiz olmayan kilid qutusu: 7 addım
Təhlükəli Lockbox: Bu təlimat Cənubi Florida Universitetində Makecourse layihəsinin tələbinin yerinə yetirilməsi üçün yaradılmışdır (www.makecourse.com) Salam! Təhlükəsiz saxlamaq istədiyiniz, lakin o qədər də etibarlı olmayan qiymətli əşyalarınız varmı?
Talos, gediş zamanı sizi təhlükəsiz saxlayır: 5 addım
Talos, Getdiyiniz müddətdə sizi təhlükəsiz saxlayır: İşə gedərkən təcavüz qurbanı olmaq, bir çox insanlar, xüsusən də qadınlar üçün olduqca yaygın bir şeydir. Ölkə nə olursa olsun, ictimai nəqliyyata minmək, evə gedərkən cinsi təcavüzə məruz qala biləcəyinizi və hətta təqib oluna biləcəyinizə bərabərdir. Onlarda
Telefonunuzu və Gadgetınızı Necə Təhlükəsiz və Təhlükəsiz Qaldırsınız: 4 Adım
Telefonunuzu və Gadget'ınızı Necə Təhlükəsiz və Təhlükəsiz Qaldırsınız: Demək olar ki, hər şeyi itirmiş bir şəxsdən (əlbəttə ki, şişirdilmiş) .Belə ki, əvvəlki cümlənin dediyi kimi, etiraf zamanı, çox çirkinəm. Bir şey mənə bağlı deyilsə, onu səhv bir yerə qoyma şansım çox böyükdür, unutmaq bir yerdədir
Daha təhlükəsiz: qatar stansiyalarını daha təhlükəsiz etmək: 7 addım
Daha təhlükəsiz: qatar stansiyalarını daha təhlükəsiz etmək: Bu gün bir çox qatar stansiyası təhlükəsizlik, maneələr və içəri girən qatar xəbərdarlığı olmadığı üçün təhlükəlidir. Bunun düzəldilməsinə ehtiyac gördük. Bu problemi həll etmək üçün Safer Better yaratdıq. Titrəmə, hərəkət sensorlar və