Съдържание:

Сейф: 3 стъпки
Сейф: 3 стъпки

Видео: Сейф: 3 стъпки

Видео: Сейф: 3 стъпки
Видео: Купили банкомат на аукционе за 100 тысяч, чтобы вскрыть его, а там... 2024, Ноември
Anonim
Сейф
Сейф
Сейф
Сейф
Сейф
Сейф

Ето какъв трябва да бъде вашият краен резултат, след като го сглобите и качите кода.

Стъпка 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:

когато се направи всичко трябва да изглежда така.

Препоръчано: