Spisu treści:
Wideo: Sejf: 3 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
Taki powinien być Twój ostateczny wynik po złożeniu go i przesłaniu kodu.
Krok 1: Rzeczy, których będziesz potrzebować
Zworki, rezystor 220 OHM, ekran LCD 16x2, przyciski, serwomotor, płytka prototypowa, Arduino Uno.
Krok 2: Kod
James Chinchay
#włączać
#włącz #włącz
adres wewn = 0; static unsigned długi SaveTimer; static unsigned long SaveDelay = (30 * 1000);
znak KOD[10] = "1234E"; char Str[10]; char DługośćKodu = 4; int poz = 0; bool Odblokowany; statyczny bez znaku długi DisplayTimer; static unsigned long DisplayDelay = 200;
LCD LiquidCrystal (12, 11, 9, 8, 7, 6);
int przyciskPin1 = 2; int przyciskPin2 = 3; przycisk intPin3 = 4; int przyciskPin4 = 5;
wewn przycisk enter = 10; wewn przycisk kasowania blokady = 13;
Serwo myServo; //ustawianie programu konstruującego void setup() {
myServo.attach(A1);
int EEPROMKodOK = prawda; for (Poz = 0; Poz <= (DługośćKodu); Poz++) { Str[Poz] = EEPROM.read(Pos); if (!(strrchr("1123456789", Str[Pos]))) { // niepoprawny kod EEPROMCodeOK = false; } } Poz++; Str[Poz] = EEPROM.odczyt(Poz); if (Str[Length + 1] != 'E') EEPROMCodeOK = false; if (EEPROMKodOK) { Str[DługośćKodu + 2] = '\0'; strncpy(KOD, Str, Długość Kodu + 1); } WyczyśćKod(); // konfiguracja wejść 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.początek(16, 2); lcd.setCursor(0, 0); //ustawianie messaged lcd.print("Witaj panie Birch"); opóźnienie (2000); lcd.clear(); lcd.setCursor(0, 0); //ustawienie monitu o hasło lcd.print("Hasło:");
WyświetlaczTimer = milis() + 200; }
pusta pętla () {
Zamek();
Poz = ograniczenie(Poz, 0, DługośćKodu); // przyciski odczytu 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); //wymagania aktywacji if (buttonState1 == LOW) { Str[Pos] = '1'; Poz++; Znak[Poz] = '\0'; opóźnienie(250); while (digitalRead(buttonPin1) == LOW);
}
else if (buttonState2 == LOW) { Str[Pos] = '2'; Poz++; Znak[Poz] = '\0'; opóźnienie(250); while (digitalRead(buttonPin2) == LOW);
}
else if (buttonState3 == LOW) { Str[Pos] = '3'; Poz++; Znak[Poz] = '\0'; opóźnienie(250); while (digitalRead(buttonPin3) == LOW); }
else if (buttonState4 == LOW) { Str[Pos] = '4'; Poz++; Znak[Poz] = '\0'; opóźnienie(250); while (digitalRead(buttonPin4) == LOW);
} else if (enterButtonState == LOW) { Str[Pos] = 'E'; Poz++; Znak[Poz] = '\0'; opóźnienie(250); while (digitalRead(buttonPin1) == LOW); if (strcmp (Str, CODE) == 0) { Odblokowane = prawda; lcd.setCursor(0, 0); lcd.print("Dostęp przyznany"); opóźnienie (2000); lcd.clear(); lcd.print("Odblokowany"); } else if (SaveTimer > millis() && (Pos + 1) == CodeLength) {
strcpy(KOD, str); for (Poz = 0; Poz <= (DługośćKodu + 1); Poz++) { EEPROM.write(Poz, Str[Poz]); } lcd.setCursor(0, 0); lcd.print("Zapisywanie kodu:"); lcd.setCursor(0, 1); lcd.print(Str);
Odblokowany = prawda; }
w przeciwnym razie {
lcd.clear(); lcd.print("Odmowa dostępu."); opóźnienie (2000); lcd.clear(); lcd.print("Hasło:");
} //kod odblokowujący podczas (odblokowany) { Unlock(); if (digitalRead(clearlockbutton) == LOW) { delay(200); lcd.clear(); lcd.print("Zablokowane"); opóźnienie (2000); lcd.clear(); Odblokowane = fałszywe; ZapiszTimer = mili() + 30000; } }
WyczyśćKod();
}
else if (clButtonState == LOW) { delay(500);
while (przycisk kasowania == LOW); if ((millis() - SaveTimer) > 4500) {
}
WyczyśćKod();
}
if ((long)(millis() - DisplayTimer) >= 0) { DisplayTimer += DisplayDelay; lcd.setCursor(9, 0); lcd.print(Str); lcd.print(" ");
} }
nieważny WyczyśćKod() {
Poz = 0; Znak[Poz] = '\0'; lcd.setCursor(0, 0); lcd.print("Hasło:"); lcd.setCursor(0, 1); lcd.print(" ");
}
nieważne Odblokuj() {
mojeSerwo.zapis(150);
} //przycisk blokowania programu void Lock() {
myServo.write(50);
}
Krok 3:
kiedy wszystko zrobisz, powinno to wyglądać tak.
Zalecana:
Zbuduj sejf za pomocą Rpi: 12 kroków
Zbuduj sejf za pomocą Rpi: Chcesz dowiedzieć się, jak przekonwertować Raspberry Pi w w pełni działający sejf? Następnie wykonaj ten 12 kroków, aby dowiedzieć się, jak to zrobić. Sejf będzie miał w pełni funkcjonalną klawiaturę i system zamykania, dzięki czemu możesz bezpiecznie przechowywać swoje rzeczy
B-Safe, przenośny sejf: 8 kroków (ze zdjęciami)
B-Safe, przenośny sejf: *** 4 września 2019 r.: Przesłałem nowy plik 3D samego pudełka. Wyglądało na to, że mój zamek był o 10 mm za wysoki na dobre zamknięcie ***ProblemWyobraź sobie: budzisz się pewnego ranka i pogoda jest naprawdę dobra. Chcesz iść na plażę. Ponieważ nie
Sejf Angeli: 5 kroków
Sejf na klucze Angeli: Zainspirowany: https://www.instructables.com/id/Key-Safe/ Dobrze skonstruowany sejf na klucze do przechowywania rzeczy osobistych. Wprowadziłem kilka poprawek w oparciu o oryginalną wersję. Dodając 3 dodatkowe hasła, „A”, „B”, „C” oraz &
Sejf klucza Arduino: 4 kroki
Arduino Key Safe: Pomysły z: https://www.instructables.com/id/Key-Safe/ Jestem osobą, która zawsze traciła swoje rzeczy bez powodu. Zabezpieczam ten klucz, żebym pamiętał, żeby schować swoje rzeczy do środka, żeby się nie zgubiły. W tym projekcie dokonałem pewnych ulepszeń
Jasny sejf: 6 kroków
Jasny sejf: Ten projekt proponuje sposób na zabezpieczenie Twojej rzeczy. Efektem końcowym projektu jest przełącznik sterowany przez arduino po dwóch etapach bezpieczeństwa. Przełącznik może otworzyć portal, zastąpić pilota lub po prostu sterować silnikiem. Mój projekt pre