جدول المحتويات:

خزنة: 3 خطوات
خزنة: 3 خطوات

فيديو: خزنة: 3 خطوات

فيديو: خزنة: 3 خطوات
فيديو: How to Open a Safe Sargent and Greenleaf كيفية فتح خزنة بقرص رقمي 2024, يوليو
Anonim
صندوق الأمان
صندوق الأمان
صندوق الأمان
صندوق الأمان
صندوق الأمان
صندوق الأمان

هذا ما يجب أن تكون عليه نتيجتك النهائية بعد تجميعها وتحميل الكود.

الخطوة 1: الأشياء التي سوف تحتاجها

الأشياء التي سوف تحتاجها
الأشياء التي سوف تحتاجها
الأشياء التي سوف تحتاجها
الأشياء التي سوف تحتاجها
الأشياء التي سوف تحتاجها
الأشياء التي سوف تحتاجها
الأشياء التي سوف تحتاجها
الأشياء التي سوف تحتاجها

أسلاك توصيل ، مقاوم 220 أوم ، شاشة LCD مقاس 16 × 2 ، أزرار دفع ، محرك سيرفو ، لوح بريد ، أردوينو أونو.

الخطوة 2: الكود

جيمس شينتشاي

#يشمل

# تضمين # تضمين

عنوان int = 0 ؛ ثابت SaveTimer طويل بدون توقيع ؛ ثابت SaveDelay طويل بدون توقيع = (30 * 1000) ؛

char CODE [10] = "1234E" ؛ char Str [10] ؛ Char CodeLength = 4 ؛ كثافة نقاط البيع = 0 ؛ منطقي مفتوح 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 ؛

أجهزة myServo ؛ // إعداد إعداد برنامج باطل () {

myServo.attach (A1) ؛

int EEPROMCodeOK = صحيح ، لـ (Pos = 0 ؛ Pos <= (CodeLength) ؛ Pos ++) {Str [Pos] = EEPROM.read (Pos) ؛ if (! (strrchr ("1123456789"، Str [Pos]))) {// ليس رمزًا صالحًا EEPROMCodeOK = false؛ }} Pos ++؛ Str [Pos] = EEPROM.read (Pos) ؛ إذا (Str [CodeLength + 1]! = 'E') EEPROMCodeOK = false ؛ إذا (EEPROMCodeOK) {Str [CodeLength + 2] = '\ 0'؛ strncpy (CODE ، 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 (clearlockbutton ، INPUT_PULLUP) ،

lcd.begin (16 ، 2) ؛ lcd.setCursor (0 ، 0) ؛ // إعداد الرسائل lcd.print ("مرحبًا السيد بيرش") ؛ تأخير (2000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ // إعداد موجه لكلمة المرور lcd.print ("كلمة المرور:") ؛

DisplayTimer = مللي () + 200 ؛ }

حلقة فارغة() {

قفل()؛

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) == منخفض) ؛

}

وإلا إذا (buttonState2 == LOW) {Str [Pos] = '2' ؛ Pos ++ ؛ Str [Pos] = '\ 0' ؛ تأخير (250) ؛ بينما (digitalRead (buttonPin2) == LOW) ؛

}

وإلا إذا (buttonState3 == LOW) {Str [Pos] = '3' ؛ Pos ++ ؛ Str [Pos] = '\ 0' ؛ تأخير (250) ؛ بينما (digitalRead (buttonPin3) == منخفض) ؛ }

وإلا إذا (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) == منخفض) ؛ إذا (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 (CODE ، 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) ؛

مفتوح = صحيح ؛ }

آخر {

lcd.clear () ؛ lcd.print ("الوصول مرفوض") ؛ تأخير (2000) ؛ lcd.clear () ؛ lcd.print ("كلمة المرور:") ؛

} // فك الشفرة أثناء (مفتوح) {Unlock () ؛ إذا (digitalRead (clearlockbutton) == LOW) {delay (200) ؛ lcd.clear () ؛ lcd.print ("مغلق") ؛ تأخير (2000) ؛ lcd.clear () ؛ مقفلة = خطأ ؛ SaveTimer = مللي () + 30000 ؛ }}

ClearCode () ،

}

وإلا إذا (clButtonState == LOW) {delay (500) ؛

بينما (clearlockbutton == LOW) ؛ إذا ((مللي () - SaveTimer)> 4500) {

}

ClearCode () ،

}

إذا ((طويل) (ملي () - DisplayTimer)> = 0) {DisplayTimer + = DisplayDelay ؛ lcd.setCursor (9 ، 0) ؛ lcd.print (Str) ؛ lcd.print ("") ؛

} }

ClearCode () باطل {

الموضع = 0 ؛ Str [Pos] = '\ 0' ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("كلمة المرور:") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("") ؛

}

فتح باطل () {

myServo.write (150) ؛

} // قفل البرنامج زر void Lock () {

myServo.write (50) ؛

}

الخطوه 3:

عند القيام بكل شيء يجب أن يبدو هكذا.

موصى به: