Mündəricat:

Təhlükəsiz qutu: 3 addım
Təhlükəsiz qutu: 3 addım

Video: Təhlükəsiz qutu: 3 addım

Video: Təhlükəsiz qutu: 3 addım
Video: YEVLAXLİ RÖVŞƏN ÜZDƏN İRAĞ 2024, Iyul
Anonim
Seyf
Seyf
Seyf
Seyf
Seyf
Seyf

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

Ehtiyac duyacağınız şeylər
Ehtiyac duyacağınız şeylər
Ehtiyac duyacağınız şeylər
Ehtiyac duyacağınız şeylər
Ehtiyac duyacağınız şeylər
Ehtiyac duyacağınız şeylər
Ehtiyac duyacağınız şeylər
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ə: