Kazalo:
Video: Sef: 3 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
To bi moral biti vaš končni rezultat, potem ko ga sestavite in naložite kodo.
Korak: Stvari, ki jih boste potrebovali
Mostične žice, 220 OHM upor, LCD zaslon 16x2, potisni gumbi, servo motor, plošča, Arduino Uno.
2. korak: Koda
James chinchay
#vključi
#include #include
int naslov = 0; statični nepodpisani dolgi SaveTimer; statično brez podpisa dolgo SaveDelay = (30 * 1000);
char CODE [10] = "1234E"; char Str [10]; char CodeLength = 4; int Pos = 0; bool Odklenjeno; statični brez podpisa dolg DisplayTimer; statično brez podpisa dolgo DisplayDelay = 200;
LCD tekoči kristal (12, 11, 9, 8, 7, 6);
gumb intPin1 = 2; gumb intPin2 = 3; gumb intPin3 = 4; gumb intPin4 = 5;
int enterbutton = 10; int clearlockbutton = 13;
Servo myServo; // nastavitev programa construct void setup () {
myServo.attach (A1);
int EEPROMCodeOK = res; for (Pos = 0; Pos <= (CodeLength); Pos ++) {Str [Pos] = EEPROM.preberite (Pos); if (! (strrchr ("1123456789", Str [Pos]))) {// ni veljavna koda EEPROMCodeOK = false; }} Pos ++; Str [Pos] = EEPROM.preberite (Poz); if (Str [CodeLength + 1]! = 'E') EEPROMCodeOK = false; if (EEPROMCodeOK) {Str [CodeLength + 2] = '\ 0'; strncpy (CODE, Str, CodeLength + 1); } ClearCode (); // nastavitev vhodov pinMode (buttonPin1, INPUT_PULLUP); pinMode (buttonPin2, INPUT_PULLUP); pinMode (buttonPin3, INPUT_PULLUP); pinMode (buttonPin4, INPUT_PULLUP);
pinMode (gumb za vnos, INPUT_PULLUP); pinMode (gumb clearlock, INPUT_PULLUP);
lcd.begin (16, 2); lcd.setCursor (0, 0); // nastavitev sporočila lcd.print ("Pozdravljeni gospod Birch"); zamuda (2000); lcd.clear (); lcd.setCursor (0, 0); // nastavitev poziva za geslo lcd.print ("Geslo:");
DisplayTimer = millis () + 200; }
void loop () {
Ključavnica ();
Pos = omeji (Pos, 0, CodeLength); // gumbi za branje int buttonState1 = digitalRead (buttonPin1); int buttonState2 = digitalno branje (buttonPin2); int buttonState3 = digitalno branje (buttonPin3); int buttonState4 = digitalno branje (buttonPin4);
int clButtonState = digitalRead (gumb za brisanje); int enterButtonState = digitalRead (gumb za vnos);
lcd.setCursor (9, 0); // zahteve za aktiviranje if (buttonState1 == LOW) {Str [Pos] = '1'; Pos ++; Str [Pos] = '\ 0'; zamuda (250); medtem ko (digitalRead (buttonPin1) == LOW);
}
else if (buttonState2 == LOW) {Str [Pos] = '2'; Pos ++; Str [Pos] = '\ 0'; zamuda (250); while (digitalno branje (buttonPin2) == NIZKO);
}
else if (buttonState3 == LOW) {Str [Pos] = '3'; Pos ++; Str [Pos] = '\ 0'; zamuda (250); while (digitalno branje (buttonPin3) == NIZKO); }
else if (buttonState4 == LOW) {Str [Pos] = '4'; Pos ++; Str [Pos] = '\ 0'; zamuda (250); while (digitalno branje (buttonPin4) == NIZKO);
} else if (enterButtonState == LOW) {Str [Pos] = 'E'; Pos ++; Str [Pos] = '\ 0'; zamuda (250); medtem ko (digitalRead (buttonPin1) == LOW); if (strcmp (Str, CODE) == 0) {Odklenjeno = true; lcd.setCursor (0, 0); lcd.print ("Dostop odobren"); zamuda (2000); lcd.clear (); lcd.print ("Odklenjeno"); } else if (SaveTimer> millis () && (Pos + 1) == CodeLength) {
strcpy (KODA, Str); for (Pos = 0; Pos <= (CodeLength+1); Pos ++) {EEPROM.write (Pos, Str [Pos]); } lcd.setCursor (0, 0); lcd.print ("Shranjevalna koda:"); lcd.setCursor (0, 1); lcd.print (Str);
Odklenjeno = res; }
drugače {
lcd.clear (); lcd.print ("Dostop zavrnjen."); zamuda (2000); lcd.clear (); lcd.print ("Geslo:");
} // odklepanje kode while (Odklenjeno) {Unlock (); if (digitalRead (clearlockbutton) == LOW) {zakasnitev (200); lcd.clear (); lcd.print ("Zaklenjeno"); zamuda (2000); lcd.clear (); Odklenjeno = napačno; SaveTimer = millis () + 30000; }}
ClearCode ();
}
else if (clButtonState == LOW) {zakasnitev (500);
medtem ko (clearlockbutton == NIZKA); if ((millis () - SaveTimer)> 4500) {
}
ClearCode ();
}
if ((long) (millis () - 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 ("Geslo:"); lcd.setCursor (0, 1); lcd.print ("");
}
void Odkleni () {
myServo.write (150);
} // gumb za zaklepanje programa void Lock () {
myServo.write (50);
}
3. korak:
ko bo vse narejeno bi moralo izgledati tako.
Priporočena:
Zgradite sef z uporabo Rpi: 12 korakov
Zgradite sef z uporabo RPI: Želite izvedeti, kako pretvoriti vaš Raspberry pi v popolnoma delujoč sef? Nato sledite tem 12 korakom, če želite izvedeti, kako. Sef bo imel popolnoma delujočo tipkovnico in sistem za zaklepanje, tako da lahko svoje stvari hranite na varnem
B-Safe, prenosni sef: 8 korakov (s slikami)
B-Safe, prenosni sef: *** 4. september 2019: naložil sem novo 3D datoteko same škatle. Zdelo se mi je, da je moja ključavnica 10 mm previsoka za dobro bližino *** Problem Predstavljajte si to: nekega jutra se zbudiš in vreme je res dobro. Želite iti na plažo, ker ne
Bančni sef RFID: 3 koraki
RFID Bank Safe: RFID je radijska frekvenčna identifikacija. Bančni sef je sef za dragocenosti. Če združimo dva, je banka še bolj varna. Tukaj je, kako sestaviti eno iz komponent Arduino in malo dela v garaži
Svetel sef: 6 korakov
Svetel sef: Ta projekt predlaga način za zavarovanje vaše stvari. Končni rezultat projekta je stikalo, ki mu po dveh stopnjah varnosti ukaže arduino. Stikalo lahko odpre portal, zamenja daljinski upravljalnik ali preprosto ukaže motorju. Moja predstavitev projekta
Odlomite in ponastavite elektronski sef: 3 koraki
Razbijte in ponastavite elektronski sef: na kratko povedano, če sem vsebino sefa odstranil za prijatelja, bi lahko obdržal sef … zakaj ne bi poskusil