Innehållsförteckning:
Video: Skåp: 3 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
Detta är vad ditt slutliga resultat bör vara efter att du har satt ihop det och laddat upp koden.
Steg 1: Saker du behöver
Jumper Wires, 220 OHM -motstånd, 16x2 LCD -skärm, tryckknappar, servomotor, brödbräda, Arduino Uno.
Steg 2: Kod
James chinchay
#omfatta
#inkludera #inkludera
int -adress = 0; statisk osignerad lång SaveTimer; statisk osignerad lång SaveDelay = (30 * 1000);
char CODE [10] = "1234E"; röding Str [10]; char CodeLength = 4; int Pos = 0; bool olåst; statisk osignerad lång DisplayTimer; statisk osignerad lång 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; // ställa in konstruktionsprogrammet void setup () {
myServo.attach (A1);
int EEPROMCodeOK = true; för (Pos = 0; Pos <= (CodeLength); Pos ++) {Str [Pos] = EEPROM.read (Pos); if (! (strrchr ("1123456789", Str [Pos]))) {// inte en giltig kod EEPROMCodeOK = false; }} Pos ++; Str [Pos] = EEPROM.read (Pos); if (Str [CodeLength + 1]! = 'E') EEPROMCodeOK = false; if (EEPROMCodeOK) {Str [CodeLength + 2] = '\ 0'; strncpy (CODE, Str, CodeLength + 1); } ClearCode (); // konfigurera ingångar 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); // konfigurera meddelande lcd.print ("Hej Mr Birch"); fördröjning (2000); lcd.clear (); lcd.setCursor (0, 0); // ställa in prompt för lösenord lcd.print ("Lösenord:");
DisplayTimer = millis () + 200; }
void loop () {
Låsa();
Pos = begränsning (Pos, 0, CodeLength); // läs knappar 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 för att aktivera if (buttonState1 == LOW) {Str [Pos] = '1'; Pos ++; Str [Pos] = '\ 0'; fördröjning (250); medan (digitalRead (buttonPin1) == LOW);
}
annars om (buttonState2 == LOW) {Str [Pos] = '2'; Pos ++; Str [Pos] = '\ 0'; fördröjning (250); medan (digitalRead (buttonPin2) == LOW);
}
annars om (buttonState3 == LOW) {Str [Pos] = '3'; Pos ++; Str [Pos] = '\ 0'; fördröjning (250); medan (digitalRead (buttonPin3) == LOW); }
annars om (buttonState4 == LOW) {Str [Pos] = '4'; Pos ++; Str [Pos] = '\ 0'; fördröjning (250); medan (digitalRead (buttonPin4) == LOW);
} annars if (enterButtonState == LOW) {Str [Pos] = 'E'; Pos ++; Str [Pos] = '\ 0'; fördröjning (250); medan (digitalRead (buttonPin1) == LOW); if (strcmp (Str, CODE) == 0) {Unlocked = true; lcd.setCursor (0, 0); lcd.print ("åtkomst beviljad"); fördröjning (2000); lcd.clear (); lcd.print ("olåst"); } annars om (SaveTimer> millis () && (Pos + 1) == CodeLength) {
strcpy (KOD, Str); för (Pos = 0; Pos <= (CodeLength+1); Pos ++) {EEPROM.write (Pos, Str [Pos]); } lcd.setCursor (0, 0); lcd.print ("Sparningskod:"); lcd.setCursor (0, 1); lcd.print (Str);
Olåst = sant; }
annat {
lcd.clear (); lcd.print ("Åtkomst nekad."); fördröjning (2000); lcd.clear (); lcd.print ("Lösenord:");
} // upplåsningskod medan (Unlocked) {Unlock (); if (digitalRead (clearlockbutton) == LOW) {delay (200); lcd.clear (); lcd.print ("Låst"); fördröjning (2000); lcd.clear (); Olåst = falskt; SaveTimer = millis () + 30000; }}
ClearCode ();
}
annars if (clButtonState == LOW) {delay (500);
medan (clearlock -knapp == LÅG); 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 ("Lösenord:"); lcd.setCursor (0, 1); lcd.print ("");
}
void Unlock () {
myServo.write (150);
} // programlåsningsknapp void Lock () {
myServo.write (50);
}
Steg 3:
när allt är gjort ska det se ut så här.
Rekommenderad:
Inbyggt skåp: 4 steg
Inbäddad skåp: I en salig aura är det att hålla sakerna på insidan något som är som ett stort stänk av spänning. Namnet "Lock of Lock" är verkligen en uppslukande del av mina dagliga artiklar som är allestädes närvarande på grund av dess natur, men vad det gör? Enkelt
Anpassat Bartop Arcade -skåp: 32 steg (med bilder)
Custom Bartop Arcade Cabinet: Hej och tack för att du kollade in min första Instructable om hur man bygger ett anpassat bartop arkadskåp! Arkader har verkligen börjat göra comeback när vi blir äldre och vill njuta av lite nostalgiskt retrospel. Det ger en fantastisk möjlighet
Cocktailbord Arcade Skåp: 8 steg
Cocktail Table Arcade Cabinet: Jag bestämde mig för att göra något trevligt för mig själv och använda min semesterhelg för att äntligen avsluta detta projekt
Hur man gör ett säkert skåp med RFID -lås: 5 steg
Hur man gör ett säkert skåp med RFID -lås: Lär dig hur du gör ett säkert skåp med RFID -lås hemma med Arduino och mycket grundläggande elektroniska komponenter. Låt oss göra ett säkert skåp med RFID -lås med Arduino och Rfid Scanner
Modernt och nytt och enklare exempel på skåp med Arduino Matrix -knappsats 4x4: 3 steg
Modernt och nytt och enklare exempel på skåp med Arduino Matrix -knappsats 4x4: Ett annat exempel på att använda en LCD -knappsatsmatris 4x4 med en I2C -krets