Indholdsfortegnelse:
Video: Safe Box: 3 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
Dette er hvad dit endelige resultat skal være efter at have sat det sammen og uploadet koden.
Trin 1: Ting, du får brug for
Jumper Wires, 220 OHM modstand, 16x2 LCD -skærm, trykknapper, servomotor, brødbræt, Arduino Uno.
Trin 2: Kode
James chinchay
#omfatte
#include #include
int adresse = 0; statisk usigneret lang SaveTimer; statisk usigneret lang SaveDelay = (30 * 1000);
char CODE [10] = "1234E"; char Str [10]; char CodeLength = 4; int Pos = 0; bool Låst op; statisk usigneret lang DisplayTimer; statisk usigneret 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 -knap = 10; int clearlock -knap = 13;
Servo myServo; // opsætning af konstruktionsprogrammets ugyldige opsætning () {
myServo.attach (A1);
int EEPROMCodeOK = sand; for (Pos = 0; Pos <= (CodeLength); Pos ++) {Str [Pos] = EEPROM.read (Pos); hvis (! (strrchr ("1123456789", Str [Pos]))) {// ikke en gyldig kode EEPROMCodeOK = false; }} Pos ++; Str [Pos] = EEPROM.read (Pos); hvis (Str [CodeLength + 1]! = 'E') EEPROMCodeOK = false; hvis (EEPROMCodeOK) {Str [CodeLength + 2] = '\ 0'; strncpy (CODE, Str, CodeLength + 1); } ClearCode (); // opsætning af input pinMode (buttonPin1, INPUT_PULLUP); pinMode (buttonPin2, INPUT_PULLUP); pinMode (buttonPin3, INPUT_PULLUP); pinMode (buttonPin4, INPUT_PULLUP);
pinMode (enterbutton, INPUT_PULLUP); pinMode (clearlock -knap, INPUT_PULLUP);
lcd.begin (16, 2); lcd.setCursor (0, 0); // opsætning af besked lcd.print ("Hej hr. Birch"); forsinkelse (2000); lcd.clear (); lcd.setCursor (0, 0); // opsætning af prompt til password lcd.print ("Password:");
DisplayTimer = millis () + 200; }
void loop () {
Låse();
Pos = begrænsning (Pos, 0, CodeLength); // læs 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 at 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);
} ellers hvis (enterButtonState == LOW) {Str [Pos] = 'E'; Pos ++; Str [Pos] = '\ 0'; forsinkelse (250); mens (digitalRead (buttonPin1) == LOW); hvis (strcmp (Str, CODE) == 0) {Unlocked = true; lcd.setCursor (0, 0); lcd.print ("Adgang tildelt"); forsinkelse (2000); lcd.clear (); lcd.print ("ulåst"); } ellers 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 ("Gem kode:"); lcd.setCursor (0, 1); lcd.print (Str);
Unlocked = true; }
andet {
lcd.clear (); lcd.print ("Adgang nægtet."); forsinkelse (2000); lcd.clear (); lcd.print ("Adgangskode:");
} // oplåsningskode, mens (Unlocked) {Unlock (); hvis (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 ();
}
hvis ((lang) (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 ("Adgangskode:"); lcd.setCursor (0, 1); lcd.print ("");
}
void Unlock () {
myServo.write (150);
} // programlåseknap tomrum Lås () {
myServo.write (50);
}
Trin 3:
når alt er gjort, skal det se sådan ud.
Anbefalede:
Corona Safe: Automatisk vandbesparende hane: 6 trin
Corona Safe: Automatisk vandbesparende hane: Vi er alle nødt til at vaske hænder nu og da for at slippe af med virussen og bakterierne specielt til Corona-virus, vi skal vaske vores hænder i 20 sekunder for helt at slippe af med det. Også sæbedispenseren eller haneknappen er ikke nødvendigvis hygiejnisk eller
B-Safe, den bærbare pengeskab: 8 trin (med billeder)
B-Safe, the Portable Safe: *** 4. september 2019: Jeg har uploadet en ny 3D-fil af selve boksen. Det så ud til, at min lås var 10 mm for høj til en god tætning *** Problemet Forestil dig dette: Du vågner en morgen, og vejret er rigtig godt. Du vil gå til stranden. Fordi du ikke
Angela's Key Safe: 5 trin
Angela's Key Safe: Inspireret af: https://www.instructables.com/id/Key-Safe/ En velstruktureret nøglesikker til opbevaring af dine personlige ejendele. Jeg lavede et par justeringer baseret på den originale version. Ved at tilføje yderligere 3 adgangskoder, "A", "B", "C" og &
RFID Bank Safe: 3 trin
RFID Bank Safe: RFID er radiofrekvensidentifikation. En banksikkerhed er en værdiboks til værdigenstande. At sætte to sammen gør en bank sikker endnu mere sikker. Sådan bygger du en ud af Arduino -komponenter og en lille smule garagearbejde
Arduino -baseret digital SAFE BOX: 10 trin
Arduino Based Digital SAFE BOX: Hej fyre! Har du noget, du gerne vil opbevare sikkert? Noget der skal holdes væk fra uønskede ubudne gæster og privatlivsangribere? Nå, jeg har en løsning på dit problem! Her er en Arduino -baseret lås Safe Box