2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Štai koks turėtų būti jūsų galutinis rezultatas, jį sukūrus ir įkėlus kodą.
1 žingsnis: reikalingi dalykai
Trumpieji laidai, 220 OHM rezistorius, 16x2 LCD ekranas, mygtukai, servo variklis, duonos lenta, „Arduino Uno“.
2 žingsnis: kodas
Jamesas chinchay
#įtraukti
#įtraukti #įtraukti
int adresas = 0; statinis nepasirašytas ilgas „SaveTimer“; statinis nepasirašytas ilgas SaveDelay = (30 * 1000);
char CODE [10] = "1234E"; char Str [10]; char CodeLength = 4; int Pos = 0; bool Unlocked; statinis nepasirašytas ilgas „DisplayTimer“; statinis nepasirašytas ilgas „DisplayDelay“= 200;
„LiquidCrystal lcd“(12, 11, 9, 8, 7, 6);
int mygtukasPin1 = 2; int mygtukasPin2 = 3; int mygtukasPin3 = 4; int mygtukasPin4 = 5;
int enterbutton = 10; int clearlockbutton = 13;
Servo myServo; // sąrankos programos kūrimas void setup () {
myServo.attach (A1);
int EEPROMCodeOK = tiesa; for (Pos = 0; Pos <= (CodeLength); Pos ++) {Str [Pos] = EEPROM.read (Pos); if (! (strrchr ("1123456789", Str [Pos])))) {// neteisingas kodas EEPROMCodeOK = false; }} Pos ++; Str [Pos] = EEPROM.read (Pos); jei (Str [CodeLength + 1]! = 'E') EEPROMCodeOK = false; if (EEPROMCodeOK) {Str [CodeLength + 2] = '\ 0'; strncpy (CODE, Str., CodeLength + 1); } „ClearCode“(); // įėjimų nustatymas pinMode (buttonPin1, INPUT_PULLUP); pinMode (mygtukasPin2, INPUT_PULLUP); pinMode (mygtukasPin3, INPUT_PULLUP); pinMode (mygtukasPin4, INPUT_PULLUP);
pinMode (įvesties mygtukas, INPUT_PULLUP); pinMode (skaidraus užrakto mygtukas, INPUT_PULLUP);
LCD. pradžia (16, 2); lcd.setCursor (0, 0); // nustatymas messaged lcd.print ("Labas pone beržai"); vėlavimas (2000 m.); lcd.clear (); lcd.setCursor (0, 0); // slaptažodžio nustatymo raginimas lcd.print ("Slaptažodis:");
„DisplayTimer“= milis () + 200; }
void loop () {
Užraktas ();
Pos = apriboti (Pos, 0, CodeLength); // skaitymo mygtukai 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); // reikalavimai aktyvuoti, jei (buttonState1 == LOW) {Str [Pos] = '1'; Pos ++; Str [Pos] = '\ 0'; vėlavimas (250); while (digitalRead (buttonPin1) == LOW);
}
else if (buttonState2 == LOW) {Str [Pos] = '2'; Pos ++; Str [Pos] = '\ 0'; vėlavimas (250); while (digitalRead (buttonPin2) == LOW);
}
else if (buttonState3 == LOW) {Str [Pos] = '3'; Pos ++; Str [Pos] = '\ 0'; vėlavimas (250); while (digitalRead (buttonPin3) == LOW); }
else if (buttonState4 == LOW) {Str [Pos] = '4'; Pos ++; Str [Pos] = '\ 0'; vėlavimas (250); while (digitalRead (buttonPin4) == LOW);
} else if (enterButtonState == LOW) {Str [Pos] = 'E'; Pos ++; Str [Pos] = '\ 0'; vėlavimas (250); while (digitalRead (buttonPin1) == LOW); if (strcmp (Str, CODE) == 0) {Atrakinta = tiesa; lcd.setCursor (0, 0); lcd.print („Prieiga suteikta“); vėlavimas (2000 m.); lcd.clear (); lcd.print ("Atrakinta"); } 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 ("Išsaugojimo kodas:"); lcd.setCursor (0, 1); lcd.print (Str);
Atrakinta = tiesa; }
Kitas {
lcd.clear (); lcd.print („Prieiga uždrausta“); vėlavimas (2000 m.); lcd.clear (); lcd.print ("Slaptažodis:");
} // kodo atrakinimas tuo metu (Atrakinta) {Atrakinti (); if (digitalRead (clearlockbutton) == LOW) {delay (200); lcd.clear (); lcd.print ("Užrakinta"); vėlavimas (2000 m.); lcd.clear (); Atrakinta = klaidinga; „SaveTimer“= milis () + 30000; }}
„ClearCode“();
}
else if (clButtonState == LOW) {delay (500);
while (clearlockbutton == LOW); jei ((milis () - „SaveTimer“> 4500) {
}
„ClearCode“();
}
if ((ilgas) (milis () - 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 ("Slaptažodis:"); lcd.setCursor (0, 1); lcd.print ("");
}
void Unlock () {
myServo.write (150);
} // programos užrakinimo mygtukas void Lock () {
myServo.write (50);
}
3 žingsnis:
kai viskas padaryta, tai turėtų atrodyti taip.