Innholdsfortegnelse:
Video: Safe Box: 3 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:25
Dette er hva det endelige resultatet ditt bør være etter å ha satt det sammen og lastet opp koden.
Trinn 1: Ting du trenger
Jumper Wires, 220 OHM motstand, 16x2 LCD -skjerm, trykknapper, servomotor, brødbrett, Arduino Uno.
Trinn 2: Kode
James chinchay
#inkludere
#include #include
int adresse = 0; statisk usignert lang SaveTimer; statisk usignert lang SaveDelay = (30 * 1000);
char CODE [10] = "1234E"; røye Str [10]; char CodeLength = 4; int Pos = 0; bool Låst opp; statisk usignert lang DisplayTimer; statisk usignert lang DisplayDelay = 200;
LiquidCrystal lcd (12, 11, 9, 8, 7, 6);
int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5;
int enter -knapp = 10; int clearlock -knapp = 13;
Servo myServo; // konfigurering av konstruksjonsprogrammets ugyldige oppsett () {
myServo.attach (A1);
int EEPROMCodeOK = true; for (Pos = 0; Pos <= (CodeLength); Pos ++) {Str [Pos] = EEPROM.read (Pos); if (! (strrchr ("1123456789", Str [Pos]))) {// ikke en gyldig kode EEPROMCodeOK = false; }} Pos ++; Str [Pos] = EEPROM.read (Pos); hvis (Str [CodeLength + 1]! = 'E') EEPROMCodeOK = false; if (EEPROMCodeOK) {Str [CodeLength + 2] = '\ 0'; strncpy (CODE, Str, CodeLength + 1); } ClearCode (); // sette opp innganger pinMode (buttonPin1, INPUT_PULLUP); pinMode (buttonPin2, INPUT_PULLUP); pinMode (buttonPin3, INPUT_PULLUP); pinMode (buttonPin4, INPUT_PULLUP);
pinMode (enter -knapp, INPUT_PULLUP); pinMode (clearlock -knapp, INPUT_PULLUP);
lcd.begin (16, 2); lcd.setCursor (0, 0); // sette opp meldt lcd.print ("Hei Mr Birch"); forsinkelse (2000); lcd.clear (); lcd.setCursor (0, 0); // sette opp ledetekst for passord lcd.print ("Passord:");
DisplayTimer = millis () + 200; }
void loop () {
Låse();
Pos = begrensning (Pos, 0, CodeLength); // lese knapper 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); // krav for å aktivere if (buttonState1 == LOW) {Str [Pos] = '1'; Pos ++; Str [Pos] = '\ 0'; forsinkelse (250); mens (digitalRead (buttonPin1) == LOW);
}
ellers hvis (buttonState2 == LOW) {Str [Pos] = '2'; Pos ++; Str [Pos] = '\ 0'; forsinkelse (250); mens (digitalRead (buttonPin2) == LOW);
}
ellers hvis (buttonState3 == LOW) {Str [Pos] = '3'; Pos ++; Str [Pos] = '\ 0'; forsinkelse (250); mens (digitalRead (buttonPin3) == LOW); }
ellers hvis (buttonState4 == LOW) {Str [Pos] = '4'; Pos ++; Str [Pos] = '\ 0'; forsinkelse (250); mens (digitalRead (buttonPin4) == LOW);
} annet hvis (enterButtonState == LOW) {Str [Pos] = 'E'; Pos ++; Str [Pos] = '\ 0'; forsinkelse (250); mens (digitalRead (buttonPin1) == LOW); if (strcmp (Str, CODE) == 0) {Unlocked = true; lcd.setCursor (0, 0); lcd.print ("Tilgang gitt"); forsinkelse (2000); lcd.clear (); lcd.print ("ulåst"); } annet hvis (SaveTimer> millis () && (Pos + 1) == CodeLength) {
strcpy (KODE, Str); for (Pos = 0; Pos <= (CodeLength+1); Pos ++) {EEPROM.write (Pos, Str [Pos]); } lcd.setCursor (0, 0); lcd.print ("Lagringskode:"); lcd.setCursor (0, 1); lcd.print (Str);
Unlocked = true; }
annet {
lcd.clear (); lcd.print ("Tilgang nektet."); forsinkelse (2000); lcd.clear (); lcd.print ("Passord:");
} // opplåsingskode mens (Unlocked) {Unlock (); if (digitalRead (clearlockbutton) == LOW) {forsinkelse (200); lcd.clear (); lcd.print ("Låst"); forsinkelse (2000); lcd.clear (); Unlocked = false; SaveTimer = millis () + 30000; }}
ClearCode ();
}
ellers hvis (clButtonState == LOW) {forsinkelse (500);
mens (clearlockbutton == LOW); hvis ((millis () - SaveTimer)> 4500) {
}
ClearCode ();
}
if ((long) (millis () - DisplayTimer)> = 0) {DisplayTimer += DisplayDelay; lcd.setCursor (9, 0); lcd.print (Str); lcd.print ("");
} }
ugyldig ClearCode () {
Pos = 0; Str [Pos] = '\ 0'; lcd.setCursor (0, 0); lcd.print ("Passord:"); lcd.setCursor (0, 1); lcd.print ("");
}
void Unlock () {
myServo.write (150);
} // programlåseknapp ugyldig Lås () {
myServo.write (50);
}
Trinn 3:
når alt er gjort skal det se slik ut.
Anbefalt:
Corona Safe: Automatisk vannbesparende kran: 6 trinn
Corona Safe: Automatisk vannbesparende kran: Vi må alle vaske hender nå og da for å bli kvitt viruset og bakteriene spesielt for Corona-viruset, vi må vaske hendene våre i 20 sekunder for å bli kvitt det helt. Såpedispenseren eller kranbryteren er kanskje ikke nødvendigvis hygienisk eller
Bygg en safe ved hjelp av en Rpi: 12 trinn
Bygg en safe ved hjelp av en Rpi: Vil du lære å konvertere din Raspberry pi til en fullt fungerende safe? Følg deretter denne 12 trinns instruksjonen for å lære hvordan. Sikkerheten vil ha et fullt fungerende tastatur og et låsesystem, slik at du kan holde eiendelene dine trygge
B-Safe, den bærbare safe: 8 trinn (med bilder)
B-Safe, the Portable Safe: *** 4. september 2019: Jeg lastet opp en ny 3D-fil av selve esken. Det virket som om låsen min var 10 mm for høy for et godt lukk *** Problemet Tenk deg dette: Du våkner en morgen og været er skikkelig bra. Du vil gå til stranden. Fordi du ikke
Angela's Key Safe: 5 trinn
Angela's Key Safe: Inspirert av: https://www.instructables.com/id/Key-Safe/ En godt strukturert nøkkel som er trygg for oppbevaring av dine personlige eiendeler. Jeg gjorde noen justeringer basert på originalversjonen. Ved å legge til ytterligere tre passord, vil "A", "B", "C" og &
Arduino -basert digital SAFE BOX: 10 trinn
Arduino Based Digital SAFE BOX: Hei folkens! Har du noe du vil oppbevare trygt? Noe som må holdes borte fra uønskede inntrengere og personverninntrengere? Vel, jeg har en løsning på problemet ditt! Her er en Arduino -basert lås Safe Box