Съдържание:
Видео: Сейф: 3 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:54
Ето какъв трябва да бъде вашият краен резултат, след като го сглобите и качите кода.
Стъпка 1: Неща, от които ще се нуждаете
Джъмперни проводници, 220 OHM резистор, 16x2 LCD екран, бутони, серво мотор, платка, Arduino Uno.
Стъпка 2: Код
Джеймс Чинчей
#включва
#включи #включи
int адрес = 0; статичен без подпис дълъг SaveTimer; статично без знак дълго SaveDelay = (30 * 1000);
char CODE [10] = "1234E"; char Str [10]; char CodeLength = 4; int Pos = 0; bool Отключен; статичен без подпис дълъг 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; // настройка на програмата за конструиране void setup () {
myServo.attach (A1);
int EEPROMCodeOK = вярно; for (Pos = 0; Pos <= (CodeLength); Pos ++) {Str [Pos] = EEPROM.read (Pos); if (! (strrchr ("1123456789", Str [Pos]))) {// не е валиден код EEPROMCodeOK = false; }} Pos ++; Str [Pos] = EEPROM.read (Pos); if (Str [CodeLength + 1]! = 'E') EEPROMCodeOK = невярно; if (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 (бутон за въвеждане, 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 = 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); // изисквания за активиране if (buttonState1 == LOW) {Str [Pos] = '1'; Pos ++; Str [Pos] = '\ 0'; забавяне (250); while (digitalRead (buttonPin1) == НИСКО);
}
else if (buttonState2 == LOW) {Str [Pos] = '2'; Pos ++; Str [Pos] = '\ 0'; забавяне (250); while (digitalRead (buttonPin2) == НИСКО);
}
else if (buttonState3 == LOW) {Str [Pos] = '3'; Pos ++; Str [Pos] = '\ 0'; забавяне (250); while (digitalRead (buttonPin3) == НИСКО); }
else if (buttonState4 == LOW) {Str [Pos] = '4'; Pos ++; Str [Pos] = '\ 0'; забавяне (250); while (digitalRead (buttonPin4) == LOW);
} else if (enterButtonState == LOW) {Str [Pos] = 'E'; Pos ++; Str [Pos] = '\ 0'; забавяне (250); while (digitalRead (buttonPin1) == НИСКО); if (strcmp (Str, CODE) == 0) {Отключено = вярно; lcd.setCursor (0, 0); lcd.print ("Осигурен достъп"); забавяне (2000); lcd.clear (); lcd.print ("Отключено"); } else if (SaveTimer> millis () && (Pos + 1) == CodeLength) {
strcpy (CODE, Str); for (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 ("Парола:");
} // отключващ код while (Отключен) {Unlock (); if (digitalRead (clearlockbutton) == LOW) {забавяне (200); lcd.clear (); lcd.print ("Заключено"); забавяне (2000); lcd.clear (); Отключено = невярно; SaveTimer = millis () + 30000; }}
ClearCode ();
}
иначе if (clButtonState == LOW) {забавяне (500);
while (clearlockbutton == LOW); if ((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 Unlock () {
myServo.write (150);
} // бутон за заключване на програмата void Lock () {
myServo.write (50);
}
Стъпка 3:
когато се направи всичко трябва да изглежда така.
Препоръчано:
Изградете сейф с помощта на Rpi: 12 стъпки
Изградете сейф с помощта на Rpi: Искате ли да научите как да конвертирате вашия Raspberry pi в напълно функциониращ сейф? След това следвайте тези 12 стъпки, за да научите как. Сейфът ще има напълно функционираща клавиатура и заключваща система, така че можете да пазите вещите си в безопасност
B-сейф, преносимият сейф: 8 стъпки (със снимки)
B-Safe, преносимият сейф: *** 4 септември 2019 г .: Качих нов 3D файл на самата кутия. Изглежда, че ключалката ми е 10 мм твърде висока за добро затваряне *** Проблем Представете си това: събуждате се една сутрин и времето е наистина добро. Искате да отидете на плаж. Защото не
Сейф на ключа на Анджела: 5 стъпки
Сейф за ключове на Анджела: Вдъхновен от: https://www.instructables.com/id/Key-Safe/ Добре структуриран ключ за съхранение на личните ви вещи. Направих няколко корекции въз основа на оригиналната версия. Чрез добавяне на още 3 пароли, "A", "B", "C" и &
RFID банков сейф: 3 стъпки
RFID Bank Safe: RFID е радиочестотна идентификация. Банков сейф е сейф за ценности. Съчетаването на две заедно прави банката още по -сигурна. Ето как да изградите един от компонентите на Arduino и малко работа в гаража
Ярък сейф: 6 стъпки
Ярък сейф: Този проект предлага начин да обезопасите вашето нещо. Крайният резултат от проекта е превключвател, командван от arduino след два етапа на сигурност. Превключвателят може да отвори портал, да замени дистанционно управление или просто да управлява двигателя. Предварителният ми проект