Spisu treści:

Sejf: 3 kroki
Sejf: 3 kroki

Wideo: Sejf: 3 kroki

Wideo: Sejf: 3 kroki
Wideo: 3 УРОВНЯ СЛОЖНОСТИ | Как сделать Сейф из Лего | Без техник 2024, Listopad
Anonim
Sejf
Sejf
Sejf
Sejf
Sejf
Sejf

Taki powinien być Twój ostateczny wynik po złożeniu go i przesłaniu kodu.

Krok 1: Rzeczy, których będziesz potrzebować

Rzeczy, których będziesz potrzebować
Rzeczy, których będziesz potrzebować
Rzeczy, których będziesz potrzebować
Rzeczy, których będziesz potrzebować
Rzeczy, których będziesz potrzebować
Rzeczy, których będziesz potrzebować
Rzeczy, których będziesz potrzebować
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: