Оглавление:
Видео: Сейф: 3 ступени
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Вот каким должен быть ваш окончательный результат после его сборки и загрузки кода.
Шаг 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:
когда все будет сделано, это должно выглядеть так.
Рекомендуемые:
Небезопасный сейф: 7 шагов
Небезопасный сейф: это руководство было создано во исполнение требований проекта Makecourse в Университете Южной Флориды (www.makecourse.com) Здравствуйте! У вас есть не очень ценные вещи, которые вы хотите обезопасить, но не так надежно?
Как сделать так, чтобы сейф следил за игрой среди нас - Электропроводка: 7 шагов
Как сделать защитный бокс в соответствии с игрой «Среди нас» - Задача по электромонтажу: Сегодня я покажу вам, как сделать охранный ящик в соответствии с игрой «Среди нас» - «Электропроводка»
Умный сейф: 7 шагов
Smart Lockbox: в этой инструкции я покажу вам, как сделать смарт-ящик. Lockbox питается от Arduino (UNO) и использует RFID и серводвигатель для управления доступом, отслеживая входящие данные от различных датчиков. История данных будет храниться в
Создайте сейф с помощью Rpi: 12 шагов
Создайте сейф с помощью Rpi: хотите узнать, как превратить Raspberry pi в полностью работающий сейф? Затем следуйте этим 12 инструкциям, чтобы узнать, как это сделать. Сейф будет иметь полностью функционирующую клавиатуру и систему запирания, чтобы вы могли хранить свои вещи в безопасности
B-Safe, портативный сейф: 8 шагов (с изображениями)
B-Safe, портативный сейф: *** 4 сентября 2019 г .: я загрузил новый 3D-файл самого ящика. Казалось, что мой замок был на 10 мм выше для хорошего закрытия *** Проблема Представьте себе следующее: однажды утром вы просыпаетесь, а погода очень хорошая. Вы хотите пойти на пляж, потому что не