Tartalomjegyzék:
Videó: Széf: 3 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Ennek kell lennie a végső eredménynek, miután összeállította és feltöltötte a kódot.
1. lépés: Amire szüksége lesz
Jumper vezetékek, 220 OHM ellenállás, 16x2 LCD képernyő, nyomógombok, szervomotor, kenyértábla, Arduino Uno.
2. lépés: Kód
James chinchay
#befoglalni
#befoglalni #befoglalni
int cím = 0; statikus előjel nélküli hosszú SaveTimer; statikus előjel nélküli hosszú SaveDelay = (30 * 1000);
char CODE [10] = "1234E"; char Str [10]; char CodeLength = 4; int Pos = 0; bool Unlocked; statikus, előjel nélküli hosszú DisplayTimer; statikus előjel nélküli hosszú DisplayDelay = 200;
LiquidCrystal LCD (12, 11, 9, 8, 7, 6);
int gombPin1 = 2; int gombPin2 = 3; int gombPin3 = 4; int gombPin4 = 5;
int enterbutton = 10; int clearlockbutton = 13;
Szervo myServo; // a konstruáló program beállítása void setup () {
myServo.attach (A1);
int EEPROMCodeOK = igaz; for (Pos = 0; Pos <= (CodeLength); Pos ++) {Str [Pos] = EEPROM.read (Pos); if (! (strrchr ("1123456789", Str [Pos])))) {// nem érvényes kód EEPROMCodeOK = false; }} Pos ++; Str [Pos] = EEPROM.read (Pos); if (Str [CodeLength + 1]! = 'E') EEPROMCodeOK = hamis; if (EEPROMCodeOK) {Str [CodeLength + 2] = '\ 0'; strncpy (CODE, Str, CodeLength + 1); } ClearCode (); // a bemenetek beállítása pinMode (buttonPin1, INPUT_PULLUP); pinMode (buttonPin2, INPUT_PULLUP); pinMode (buttonPin3, INPUT_PULLUP); pinMode (buttonPin4, INPUT_PULLUP);
pinMode (enterbutt, INPUT_PULLUP); pinMode (clearlockbutton, INPUT_PULLUP);
lcd. kezdet (16, 2); lcd.setCursor (0, 0); // messaged lcd.print beállítása ("Hello Mr Birch"); késleltetés (2000); lcd.clear (); lcd.setCursor (0, 0); // jelszó beállítása lcd.print ("Jelszó:");
DisplayTimer = millis () + 200; }
void loop () {
Zár();
Pos = kényszer (Pos, 0, CodeLength); // olvasógombok 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); // aktiválási követelmények, ha (buttonState1 == LOW) {Str [Pos] = '1'; Pos ++; Str [Pos] = '\ 0'; késleltetés (250); while (digitalRead (buttonPin1) == LOW);
}
else if (buttonState2 == LOW) {Str [Pos] = '2'; Pos ++; Str [Pos] = '\ 0'; késleltetés (250); while (digitalRead (buttonPin2) == LOW);
}
else if (buttonState3 == LOW) {Str [Pos] = '3'; Pos ++; Str [Pos] = '\ 0'; késleltetés (250); while (digitalRead (buttonPin3) == LOW); }
else if (buttonState4 == LOW) {Str [Pos] = '4'; Pos ++; Str [Pos] = '\ 0'; késleltetés (250); while (digitalRead (buttonPin4) == LOW);
} else if (enterButtonState == LOW) {Str [Pos] = 'E'; Pos ++; Str [Pos] = '\ 0'; késleltetés (250); while (digitalRead (buttonPin1) == LOW); if (strcmp (Str, CODE) == 0) {Feloldva = igaz; lcd.setCursor (0, 0); lcd.print ("Hozzáférés biztosított"); késleltetés (2000); lcd.clear (); lcd.print ("Feloldva"); } 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 ("Mentési kód:"); lcd.setCursor (0, 1); lcd.print (Str);
Feloldva = igaz; }
más {
lcd.clear (); lcd.print ("Hozzáférés megtagadva."); késleltetés (2000); lcd.clear (); lcd.print ("Jelszó:");
} // kód feloldása közben (Feloldva) {Unlock (); if (digitalRead (clearlockbutton) == LOW) {delay (200); lcd.clear (); lcd.print ("Zárolt"); késleltetés (2000); lcd.clear (); Feloldva = hamis; SaveTimer = millis () + 30000; }}
ClearCode ();
}
else if (clButtonState == LOW) {delay (500);
while (clearlockbutton == LOW); if ((millis () - SaveTimer)> 4500) {
}
ClearCode ();
}
if ((hosszú) (millis () - DisplayTimer)> = 0) {DisplayTimer += DisplayDelay; lcd.setCursor (9, 0); lcd.print (Str); lcd.print ("");
} }
void ClearCode () {
Poz = 0; Str [Pos] = '\ 0'; lcd.setCursor (0, 0); lcd.print ("Jelszó:"); lcd.setCursor (0, 1); lcd.print ("");
}
void Unlock () {
myServo.write (150);
} // programzáró gomb void Lock () {
myServo.write (50);
}
3. lépés:
ha mindent megtett, annak így kell kinéznie.
Ajánlott:
B-Safe, hordozható széf: 8 lépés (képekkel)
B-Safe, a hordozható széf: *** 2019. szeptember 4 .: Feltöltöttem egy új 3D-s fájlt magáról a dobozról. Úgy tűnt, hogy a zárom 10 mm -rel túl magas volt a jó záráshoz. A tengerpartra akarsz menni. Mert nem
DC - DC feszültség Lépés lekapcsoló mód Buck feszültségátalakító (LM2576/LM2596): 4 lépés
DC-DC feszültség Lépés lekapcsoló üzemmód Buck feszültségátalakító (LM2576/LM2596): A rendkívül hatékony bakkonverter készítése nehéz feladat, és még a tapasztalt mérnököknek is többféle kivitelre van szükségük, hogy a megfelelőt hozzák létre. egy DC-DC áramátalakító, amely csökkenti a feszültséget (miközben növeli
Világos széf: 6 lépés
Világos széf: Ez a projekt javaslatot tesz a dolog biztonságának biztosítására. A projekt végeredménye az arduino által vezérelt kapcsoló a biztonság két szakaszát követően. A kapcsoló megnyithat egy portált, kicserélheti a távirányítót, vagy egyszerűen parancsot adhat a motornak. Az én projektem
A búvóhely / széf: 9 lépés
A Búvóhely / Biztonság: INTRO: Ez egy kis díszítőelem, amely rejtekhelyként is szolgál, innen a „Búvóhely” vagy „Biztonságház” elnevezés. Bicikliztem a fészerben, és ezt találtam ki. Fő hobbim az 1 " méretű babaház, amely hatalmas és átalakítás alatt áll. Én en
Elektronikus széf feltörése és visszaállítása: 3 lépés
Feltörni és visszaállítani az elektronikus páncélszekrényt: röviden, ha eltávolítanám a páncélszekrény tartalmát egy barátomnak, megtarthatnám a széfet … miért ne próbálhatnám ki