Оглавление:

Сейф: 3 ступени
Сейф: 3 ступени

Видео: Сейф: 3 ступени

Видео: Сейф: 3 ступени
Видео: Вы не Сможете Посмотреть Это Видео до Конца 2024, Июль
Anonim
Сейф
Сейф
Сейф
Сейф
Сейф
Сейф

Вот каким должен быть ваш окончательный результат после его сборки и загрузки кода.

Шаг 1. Вещи, которые вам понадобятся

Вещи, которые вам понадобятся
Вещи, которые вам понадобятся
Вещи, которые вам понадобятся
Вещи, которые вам понадобятся
Вещи, которые вам понадобятся
Вещи, которые вам понадобятся
Вещи, которые вам понадобятся
Вещи, которые вам понадобятся

Провода-перемычки, резистор 220 Ом, ЖК-экран 16x2, кнопки, серводвигатель, макет, Arduino Uno.

Шаг 2: Код

Джеймс Чинчай

#включают

#include #include

int адрес = 0; статический беззнаковый длинный SaveTimer; статический беззнаковый длинный SaveDelay = (30 * 1000);

char CODE [10] = "1234E"; char Str [10]; char CodeLength = 4; int Pos = 0; bool разблокирован; статический беззнаковый длинный DisplayTimer; статический беззнаковый длинный DisplayDelay = 200;

ЖК-дисплей LiquidCrystal (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 = true; для (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 (кнопка ввода, INPUT_PULLUP); pinMode (кнопка очистки, INPUT_PULLUP);

lcd.begin (16, 2); lcd.setCursor (0, 0); // настройка сообщения lcd.print ("Здравствуйте, мистер Берч"); задержка (2000); lcd.clear (); lcd.setCursor (0, 0); // установка запроса пароля lcd.print ("Пароль:");

DisplayTimer = миллис () + 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 (кнопка ввода);

lcd.setCursor (9, 0); // требования для активации if (buttonState1 == LOW) {Str [Pos] = '1'; Pos ++; Str [Pos] = '\ 0'; задержка (250); while (digitalRead (buttonPin1) == LOW);

}

иначе, если (buttonState2 == LOW) {Str [Pos] = '2'; Pos ++; Str [Pos] = '\ 0'; задержка (250); while (digitalRead (buttonPin2) == LOW);

}

иначе, если (buttonState3 == LOW) {Str [Pos] = '3'; Pos ++; Str [Pos] = '\ 0'; задержка (250); while (digitalRead (buttonPin3) == LOW); }

иначе, если (buttonState4 == LOW) {Str [Pos] = '4'; Pos ++; Str [Pos] = '\ 0'; задержка (250); while (digitalRead (buttonPin4) == LOW);

} иначе, если (enterButtonState == LOW) {Str [Pos] = 'E'; Pos ++; Str [Pos] = '\ 0'; задержка (250); while (digitalRead (buttonPin1) == LOW); if (strcmp (Str, CODE) == 0) {разблокировано = true; lcd.setCursor (0, 0); lcd.print («Доступ разрешен»); задержка (2000); lcd.clear (); lcd.print («Разблокирован»); } else if (SaveTimer> millis () && (Pos + 1) == CodeLength) {

strcpy (КОД, 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 ("Пароль:");

} // код разблокировки while (Unlocked) {Unlock (); если (digitalRead (clearlockbutton) == LOW) {задержка (200); lcd.clear (); lcd.print («Заблокировано»); задержка (2000); lcd.clear (); Разблокирован = ложь; SaveTimer = миллис () + 30000; }}

ClearCode ();

}

иначе, если (clButtonState == LOW) {задержка (500);

while (clearlockbutton == LOW); if ((millis () - SaveTimer)> 4500) {

}

ClearCode ();

}

если ((длинный) (миллис () - 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:

когда все будет сделано, это должно выглядеть так.

Рекомендуемые: